forked from Minki/linux
V4L/DVB (12206): get_dvb_firmware: Correct errors in MPC718 firmware extraction logic
The extraction routine for the MPC718 "firmware" had 2 bugs in it, where one bug masked the effect of the other. The loop iteration should have set $prevlen = $currlen at the end of the loop, and the if() check should have used && instead of || for deciding if the firmware length is reasonable. Signed-off-by: Andy Walls <awalls@radix.net> Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
This commit is contained in:
parent
a5ca3a1bc7
commit
0a6843483c
@ -413,13 +413,14 @@ sub mpc718 {
|
|||||||
|
|
||||||
while (<IN>) {
|
while (<IN>) {
|
||||||
$currlen = length($_);
|
$currlen = length($_);
|
||||||
if ($prevlen == $currlen || $currlen <= 64) {
|
if ($prevlen == $currlen && $currlen <= 64) {
|
||||||
chop; chop; # Get rid of "TUNER GO"
|
chop; chop; # Get rid of "TUNER GO"
|
||||||
s/^\0\0//; # get rid of leading 00 00 if it's there
|
s/^\0\0//; # get rid of leading 00 00 if it's there
|
||||||
printf OUT "$_";
|
printf OUT "$_";
|
||||||
$found = 1;
|
$found = 1;
|
||||||
last;
|
last;
|
||||||
}
|
}
|
||||||
|
$prevlen = $currlen;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
close OUT;
|
close OUT;
|
||||||
|
Loading…
Reference in New Issue
Block a user