[Imgtool Mac Module] Fixed an unsigned overflow error that would causes crashes on 64 bit systems

This commit is contained in:
Nathan Woods 2016-09-30 07:53:46 -04:00
parent 84fb03f4a8
commit 4ea9bdd6c5

View File

@ -3839,8 +3839,9 @@ static imgtoolerr_t BT_node_get_record(mac_BTref *BTref, void *node_buf, unsigne
if (recnum >= node_numRecords)
return IMGTOOLERR_UNEXPECTED;
offset = get_UINT16BE(((UINT16BE *)((UINT8 *) node_buf + BTref->nodeSize))[-recnum-1]);
next_offset = get_UINT16BE(((UINT16BE *)((UINT8 *) node_buf + BTref->nodeSize))[-recnum-2]);
int recnum_s = (int)recnum;
offset = get_UINT16BE(((UINT16BE *)((UINT8 *) node_buf + BTref->nodeSize))[-recnum_s - 1]);
next_offset = get_UINT16BE(((UINT16BE *)((UINT8 *) node_buf + BTref->nodeSize))[-recnum_s - 2]);
if ((offset < sizeof(BTNodeHeader)) || (offset > BTref->nodeSize-2*node_numRecords)
|| (next_offset < sizeof(BTNodeHeader)) || (next_offset > BTref->nodeSize-2*node_numRecords)