diff --git a/firmware/usbstack/usb_storage.c b/firmware/usbstack/usb_storage.c index fe650f9..3384578 100644 --- a/firmware/usbstack/usb_storage.c +++ b/firmware/usbstack/usb_storage.c @@ -747,7 +747,7 @@ static void handle_scsi(struct command_block_wrapper* cbw) tb.lun_data->luns[i][1]=0; } send_command_result(tb.lun_data, - MIN(sizeof(struct report_lun_data), length)); + MIN(sizeof(struct report_lun_data), length)); break; } @@ -756,7 +756,7 @@ static void handle_scsi(struct command_block_wrapper* cbw) fill_inquiry(IF_MV(lun)); length = MIN(length, cbw->command_block[4]); send_command_result(tb.inquiry, - MIN(sizeof(struct inquiry_data), length)); + MIN(sizeof(struct inquiry_data), length)); break; case SCSI_REQUEST_SENSE: { @@ -772,7 +772,8 @@ static void handle_scsi(struct command_block_wrapper* cbw) tb.sense_data->SKSV=0; tb.sense_data->SenseKeySpecific=0; logf("scsi request_sense %d",lun); - send_command_result(tb.sense_data, sizeof(struct sense_data)); + send_command_result(tb.sense_data, + MIN(sizeof(struct sense_data), length)); break; } @@ -873,7 +874,7 @@ static void handle_scsi(struct command_block_wrapper* cbw) tb.ms_data_6->block_descriptor.block_size[2] = ((block_size*block_size_mult) & 0x0000ff); send_command_result(tb.ms_data_6, - MIN(sizeof(struct mode_sense_data_6), length)); + MIN(sizeof(struct mode_sense_data_6), length)); break; default: send_command_failed_result(); @@ -928,7 +929,7 @@ static void handle_scsi(struct command_block_wrapper* cbw) htobe32(SCSI_FORMAT_CAPACITY_FORMATTED_MEDIA); send_command_result(tb.format_capacity_data, - MIN(sizeof(struct format_capacity), length)); + MIN(sizeof(struct format_capacity), length)); } else { send_command_failed_result(); @@ -950,7 +951,7 @@ static void handle_scsi(struct command_block_wrapper* cbw) htobe32(block_size*block_size_mult); send_command_result(tb.capacity_data, - MIN(sizeof(struct capacity), length)); + MIN(sizeof(struct capacity), length)); } else { send_command_failed_result();