Skip to content

Commit

Permalink
[SCSI] libosd: Fix NULL dereference BUG when target is not OSD confor…
Browse files Browse the repository at this point in the history
…mant

Very old OSC's Target had a BUG in the Get/Set attributes where
it was looking in the wrong places for attribute lists length.
If used with the open-osd initiator, the initiator would dereference
a NULL pointer when retrieving system_information attributes.

Checks are added that retrieval of each attribute is successful
before accessing its value.

Signed-off-by: Boaz Harrosh <[email protected]>
Signed-off-by: James Bottomley <[email protected]>
  • Loading branch information
Boaz Harrosh authored and James Bottomley committed Mar 12, 2009
1 parent c96952e commit 97218a1
Showing 1 changed file with 7 additions and 4 deletions.
11 changes: 7 additions & 4 deletions drivers/scsi/osd/osd_initiator.c
Original file line number Diff line number Diff line change
Expand Up @@ -131,7 +131,7 @@ static int _osd_print_system_info(struct osd_dev *od, void *caps)

pFirst = get_attrs[a++].val_ptr;
OSD_INFO("OSD_ATTR_RI_PRODUCT_REVISION_LEVEL [%u]\n",
get_unaligned_be32(pFirst));
pFirst ? get_unaligned_be32(pFirst) : ~0U);

pFirst = get_attrs[a++].val_ptr;
OSD_INFO("OSD_ATTR_RI_PRODUCT_SERIAL_NUMBER [%s]\n",
Expand All @@ -143,15 +143,18 @@ static int _osd_print_system_info(struct osd_dev *od, void *caps)

pFirst = get_attrs[a++].val_ptr;
OSD_INFO("OSD_ATTR_RI_TOTAL_CAPACITY [0x%llx]\n",
_LLU(get_unaligned_be64(pFirst)));
pFirst ? _LLU(get_unaligned_be64(pFirst)) : ~0ULL);

pFirst = get_attrs[a++].val_ptr;
OSD_INFO("OSD_ATTR_RI_USED_CAPACITY [0x%llx]\n",
_LLU(get_unaligned_be64(pFirst)));
pFirst ? _LLU(get_unaligned_be64(pFirst)) : ~0ULL);

pFirst = get_attrs[a++].val_ptr;
OSD_INFO("OSD_ATTR_RI_NUMBER_OF_PARTITIONS [%llu]\n",
_LLU(get_unaligned_be64(pFirst)));
pFirst ? _LLU(get_unaligned_be64(pFirst)) : ~0ULL);

if (a >= nelem)
goto out;

/* FIXME: Where are the time utilities */
pFirst = get_attrs[a++].val_ptr;
Expand Down

0 comments on commit 97218a1

Please sign in to comment.