V4L/DVB (12206): get_dvb_firmware: Correct errors in MPC718 firmware extraction logic
authorAndy Walls <awalls@radix.net>
Sun, 5 Jul 2009 19:22:45 +0000 (16:22 -0300)
committerMauro Carvalho Chehab <mchehab@redhat.com>
Sun, 5 Jul 2009 22:21:49 +0000 (19:21 -0300)
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>
Documentation/dvb/get_dvb_firmware

index 64174d6258f01764025388399f28029c01e760bb..3d1b0ab70c8ef3ed498eb00da7c68b5371d55ce6 100644 (file)
@@ -413,13 +413,14 @@ sub mpc718 {
 
        while (<IN>) {
            $currlen = length($_);
-           if ($prevlen == $currlen || $currlen <= 64) {
+           if ($prevlen == $currlen && $currlen <= 64) {
                chop; chop; # Get rid of "TUNER GO"
                s/^\0\0//;  # get rid of leading 00 00 if it's there
                printf OUT "$_";
                $found = 1;
                last;
            }
+           $prevlen = $currlen;
        }
     }
     close OUT;