[coreboot] #102: flashrom: coreboot ROM image file identification heuristic is broken

coreboot svn at coreboot.org
Fri Jul 4 18:32:03 CEST 2008


#102: flashrom: coreboot ROM image file identification heuristic is broken
-------------------------+--------------------------------------------------
    Reporter:  stuge     |         Owner:  somebody           
        Type:  defect    |        Status:  reopened           
    Priority:  major     |     Milestone:  flashrom v1.0      
   Component:  flashrom  |       Version:                     
  Resolution:            |      Keywords:  rom image heuristic
Dependencies:            |   Patchstatus:  there is no patch  
-------------------------+--------------------------------------------------

Comment(by hailfinger):

 Replying to [comment:6 anonymous]:
 > Is this what the author possibly meant?

 Not completely. The patch below is a pure warning fix, but it doesn't fix
 the implementation of the mechanism completely.

 >
 > {{{
 > Index: layout.c
 > ===================================================================
 > --- layout.c    (revision 3412)
 > +++ layout.c    (working copy)
 > @@ -65,9 +65,9 @@
 >          */
 >         if ((*walk) == 0 || ((*walk) & 0x3ff) != 0 || *walk > size ||
 >                 *(walk - 1) > size || *(walk - 2) > size ||
 > -               (!isprint((const char *)(bios + size - *(walk - 1))) &&
 > +               (!isprint(*(const char *)(bios + size - *(walk - 1))) &&
 >                 ((const char *)(bios + size - *(walk - 1)))) ||
 > -               (!isprint((const char *)(bios + size - *(walk - 2))) &&
 > +               (!isprint(*(const char *)(bios + size - *(walk - 2))) &&
 >                 ((const char *)(bios + size - *(walk - 2))))) {
 >                 printf("Flash image seems to be a legacy BIOS. Disabling
 checks.\n");
 >                 mainboard_vendor = def_name;
 > }}}
 >
 > Was this code ever tested or reviewed? It obviously never worked like
 that.

 It compiled cleanly without warnings on my machine (gcc 4.2.1), otherwise
 I wouldn't have committed it.

 And I would be very careful with claiming "it obviously never worked". If
 it was so obvious, why did you miss 50% of the pointer dereference bugs?
 Probably because you didn't read the code and only looked at compiler
 warnings.

-- 
Ticket URL: <http://tracker.coreboot.org/trac/coreboot/ticket/102#comment:7>
coreboot <http://www.coreboot.org/>



More information about the coreboot mailing list