Fix inifinite loop on well formed and malformed multirecrd areas
There were mistakes in the parsing of multirecord IPMI fru area. Most critically, the index never advanced. Additionally, ensure that the index always increases and check against the length of the structure so that a malformed area would not send our parser into an infinite loop.
This commit is contained in:
parent
84bf9dbf48
commit
4d60f2b270
@ -2971,12 +2971,13 @@ sub parsefru {
|
||||
my $currsize;
|
||||
if ($bytes->[$curridx] <= 5) { #don't even try to parse unknown stuff
|
||||
#some records don't comply to any SPEC
|
||||
while (not $last) {
|
||||
while (not $last and $curridx < (scalar @$bytes)) {
|
||||
if ($bytes->[$curridx+1] & 128) {
|
||||
$last=1;
|
||||
}
|
||||
$currsize=$bytes->[$curridx+2];
|
||||
push @{$fruhash->{extra}},$bytes->[$curridx..$curridx+4+$currsize-1];
|
||||
push @{$fruhash->{extra}},@{$bytes}[$curridx..$curridx+4+$currsize-1];
|
||||
$curridx += 5 + $currsize;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user