|  | @@ -524,11 +524,21 @@ int scsiDiskCommand()
 | 
	
		
			
				|  |  |  	else if (unlikely(command == 0x37))
 | 
	
		
			
				|  |  |  	{
 | 
	
		
			
				|  |  |  		// READ DEFECT DATA
 | 
	
		
			
				|  |  | -		scsiDev.status = CHECK_CONDITION;
 | 
	
		
			
				|  |  | -		scsiDev.target->sense.code = NO_SENSE;
 | 
	
		
			
				|  |  | -		scsiDev.target->sense.asc = DEFECT_LIST_NOT_FOUND;
 | 
	
		
			
				|  |  | -		scsiDev.phase = STATUS;
 | 
	
		
			
				|  |  | +		uint32_t allocLength = (((uint16_t)scsiDev.cdb[7]) << 8) |
 | 
	
		
			
				|  |  | +			scsiDev.cdb[8];
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +		scsiDev.data[0] = 0;
 | 
	
		
			
				|  |  | +		scsiDev.data[1] = scsiDev.cdb[1];
 | 
	
		
			
				|  |  | +		scsiDev.data[2] = 0;
 | 
	
		
			
				|  |  | +		scsiDev.data[3] = 0;
 | 
	
		
			
				|  |  | +		scsiDev.dataLen = 4;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +		if (scsiDev.dataLen > allocLength)
 | 
	
		
			
				|  |  | +		{
 | 
	
		
			
				|  |  | +			scsiDev.dataLen = allocLength;
 | 
	
		
			
				|  |  | +		}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +		scsiDev.phase = DATA_IN;
 | 
	
		
			
				|  |  |  	}
 | 
	
		
			
				|  |  |  	else
 | 
	
		
			
				|  |  |  	{
 |