lkml.org 
[lkml]   [2016]   [Nov]   [13]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Date
    Subject[PATCH 3.16 332/346] scsi: arcmsr: Buffer overflow in arcmsr_iop_message_xfer()
    3.16.39-rc1 review patch.  If anyone has any objections, please let me know.

    ------------------

    From: Dan Carpenter <dan.carpenter@oracle.com>

    commit 7bc2b55a5c030685b399bb65b6baa9ccc3d1f167 upstream.

    We need to put an upper bound on "user_len" so the memcpy() doesn't
    overflow.

    Reported-by: Marco Grassi <marco.gra@gmail.com>
    Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
    Reviewed-by: Tomas Henzl <thenzl@redhat.com>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    [bwh: Backported to 3.16:
    - Adjust context
    - Use literal 1032 insetad of ARCMSR_API_DATA_BUFLEN]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
    ---
    --- a/drivers/scsi/arcmsr/arcmsr_hba.c
    +++ b/drivers/scsi/arcmsr/arcmsr_hba.c
    @@ -1802,7 +1802,8 @@ static int arcmsr_iop_message_xfer(struc

    case ARCMSR_MESSAGE_WRITE_WQBUFFER: {
    unsigned char *ver_addr;
    - int32_t my_empty_len, user_len, wqbuf_firstindex, wqbuf_lastindex;
    + uint32_t user_len;
    + int32_t my_empty_len, wqbuf_firstindex, wqbuf_lastindex;
    uint8_t *pQbuffer, *ptmpuserbuffer;

    ver_addr = kmalloc(1032, GFP_ATOMIC);
    @@ -1819,6 +1820,11 @@ static int arcmsr_iop_message_xfer(struc
    }
    ptmpuserbuffer = ver_addr;
    user_len = pcmdmessagefld->cmdmessage.Length;
    + if (user_len > 1032) {
    + retvalue = ARCMSR_MESSAGE_FAIL;
    + kfree(ver_addr);
    + goto message_out;
    + }
    memcpy(ptmpuserbuffer, pcmdmessagefld->messagedatabuffer, user_len);
    wqbuf_lastindex = acb->wqbuf_lastindex;
    wqbuf_firstindex = acb->wqbuf_firstindex;
    \
     
     \ /
      Last update: 2016-11-14 03:55    [W:4.089 / U:0.012 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site