build_opt_tbl: error instead of null pointer access if no checksum is defined.
authorStefan Reinauer <stepan@coresystems.de>
Tue, 30 Mar 2010 09:59:23 +0000 (09:59 +0000)
committerStefan Reinauer <stepan@openbios.org>
Tue, 30 Mar 2010 09:59:23 +0000 (09:59 +0000)
xe7501devkit: If cmos.layout is used, there must be a checksum.

Signed-off-by: Stefan Reinauer <stepan@coresystems.de>
Acked-by: Stefan Reinauer <stepan@coresystems.de>
git-svn-id: svn://svn.coreboot.org/coreboot/trunk@5327 2b7e53f0-3cfb-0310-b3e9-8179ed1497e1

src/mainboard/intel/xe7501devkit/cmos.layout
util/options/build_opt_tbl.c

index 57139c1cd5587ffbb5f3a29d9d458131e2a16726..39cfc31784eadda07663c11f61764dc8658126f1 100644 (file)
@@ -52,4 +52,5 @@ enumerations
 checksums
 
 # Checksum FROM bit-location TO bit-location STORE AT bit-location
-#checksum 1024 1047 1048
+checksum 1024 1047 1048
+
index 910c49cce2ce6c8f3cb61f10cfdb617febd4a185..b4e4151dc179cb1f33a8ba7cc57fd9b009208c1a 100644 (file)
@@ -608,9 +608,17 @@ int main(int argc, char **argv)
                        fprintf(fp, "#define CMOS_VLEN_%s %d\n",
                                ce->name, ce->length);
                }
-               fprintf(fp, "\n#define LB_CKS_RANGE_START %d\n", cs->range_start / 8);
-               fprintf(fp, "#define LB_CKS_RANGE_END %d\n", cs->range_end / 8);
-               fprintf(fp, "#define LB_CKS_LOC %d\n", cs->location / 8);
+
+               if (cs != NULL) {
+                       fprintf(fp, "\n#define LB_CKS_RANGE_START %d\n", cs->range_start / 8);
+                       fprintf(fp, "#define LB_CKS_RANGE_END %d\n", cs->range_end / 8);
+                       fprintf(fp, "#define LB_CKS_LOC %d\n", cs->location / 8);
+               } else {
+                       fprintf(stderr, "Error - No checksums defined.\n");
+                       fclose(fp);
+                       unlink(tempfilename);
+                       exit(1);
+               }
                fclose(fp);
 
                UNLINK_IF_NECESSARY(header);