mirror of
https://github.com/aaru-dps/aaruremote.git
synced 2025-12-16 19:24:37 +00:00
Use a temporary buffer on SCSI commands to ensure alignment.
This commit is contained in:
15
worker.c
15
worker.c
@@ -458,12 +458,21 @@ void* WorkingLoop(void* arguments)
|
|||||||
|
|
||||||
// TODO: Check size of buffers + size of packet is not bigger than size in header
|
// TODO: Check size of buffers + size of packet is not bigger than size in header
|
||||||
|
|
||||||
if(le32toh(pkt_cmd_scsi->cdb_len) > 0) cdb_buf = in_buf + sizeof(AaruPacketCmdScsi);
|
if(le32toh(pkt_cmd_scsi->cdb_len) > 0)
|
||||||
|
{
|
||||||
|
cdb_buf = malloc(le32toh(pkt_cmd_scsi->cdb_len));
|
||||||
|
memcpy(cdb_buf, in_buf + sizeof(AaruPacketCmdScsi), le32toh(pkt_cmd_scsi->cdb_len));
|
||||||
|
}
|
||||||
else
|
else
|
||||||
cdb_buf = NULL;
|
cdb_buf = NULL;
|
||||||
|
|
||||||
if(le32toh(pkt_cmd_scsi->buf_len) > 0)
|
if(le32toh(pkt_cmd_scsi->buf_len) > 0)
|
||||||
buffer = in_buf + le32toh(pkt_cmd_scsi->cdb_len) + sizeof(AaruPacketCmdScsi);
|
{
|
||||||
|
buffer = malloc(le32toh(pkt_cmd_scsi->buf_len));
|
||||||
|
memcpy(buffer,
|
||||||
|
in_buf + le32toh(pkt_cmd_scsi->cdb_len) + sizeof(AaruPacketCmdScsi),
|
||||||
|
le32toh(pkt_cmd_scsi->buf_len));
|
||||||
|
}
|
||||||
else
|
else
|
||||||
buffer = NULL;
|
buffer = NULL;
|
||||||
|
|
||||||
@@ -515,6 +524,8 @@ void* WorkingLoop(void* arguments)
|
|||||||
NetWrite(cli_ctx, pkt_res_scsi, le32toh(pkt_res_scsi->hdr.len));
|
NetWrite(cli_ctx, pkt_res_scsi, le32toh(pkt_res_scsi->hdr.len));
|
||||||
free(pkt_cmd_scsi);
|
free(pkt_cmd_scsi);
|
||||||
free(pkt_res_scsi);
|
free(pkt_res_scsi);
|
||||||
|
if(cdb_buf) free(cdb_buf);
|
||||||
|
if(buffer) free(buffer);
|
||||||
if(sense_buf) free(sense_buf);
|
if(sense_buf) free(sense_buf);
|
||||||
continue;
|
continue;
|
||||||
case AARUREMOTE_PACKET_TYPE_COMMAND_GET_SDHCI_REGISTERS:
|
case AARUREMOTE_PACKET_TYPE_COMMAND_GET_SDHCI_REGISTERS:
|
||||||
|
|||||||
Reference in New Issue
Block a user