]> git.proxmox.com Git - mirror_qemu.git/commitdiff
scsi: do not overwrite memory on REQUEST SENSE commands with a large buffer
authorPaolo Bonzini <pbonzini@redhat.com>
Sun, 14 Aug 2011 21:05:49 +0000 (14:05 -0700)
committerBlue Swirl <blauwirbel@gmail.com>
Tue, 16 Aug 2011 19:11:51 +0000 (19:11 +0000)
Other scsi_target_reqops commands were careful about not using r->cmd.xfer
directly, and instead always cap it to a fixed length.  This was not done
for REQUEST SENSE, and this patch fixes it.

Reported-by: Blue Swirl <blauwirbel@gmail.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
hw/scsi-bus.c

index 559d5a47088f6ddc638baba150939ec856a54b3f..c3ce7df6a1fff604a6a2aaa362d8ccdbd29e14ca 100644 (file)
@@ -292,7 +292,8 @@ static int32_t scsi_target_send_command(SCSIRequest *req, uint8_t *buf)
         if (req->cmd.xfer < 4) {
             goto illegal_request;
         }
-        r->len = scsi_device_get_sense(r->req.dev, r->buf, req->cmd.xfer,
+        r->len = scsi_device_get_sense(r->req.dev, r->buf,
+                                       MIN(req->cmd.xfer, sizeof r->buf),
                                        (req->cmd.buf[1] & 1) == 0);
         break;
     default: