Project

General

Profile

Bug #3015

sbin/gpt/show.c:133: do we always find what we are looking for ?

Added by dcb over 2 years ago. Updated 4 months ago.

Status:
Resolved
Priority:
Normal
Assignee:
-
Category:
-
Target version:
-
Start date:
04/11/2017
Due date:
% Done:

0%

Estimated time:

Description

dragonfly/sbin/gpt/show.c:133]: (error) Array 'mbr.mbr_part[4]' accessed at index 4, which is out of bounds.

Source code is

for (i = 0; i < 4; i++) {
start = le16toh(mbr->mbr_part[i].part_start_hi);
start = (start << 16) +
le16toh(mbr->mbr_part[i].part_start_lo);
if (m->map_start == p->map_start + start)
break;
}
printf("%d", mbr->mbr_part[i].part_typ);

In the final printf, the code assumes we have found what we are looking for.

Maybe the code would be stronger if it dealt with the case where it didn't.

History

#1

Updated by liweitianux 4 months ago

  • Status changed from New to Resolved

The code is actually right, but not obvious. I've improved the code against NetBSD and make this code clearer.

Also available in: Atom PDF