diff -durp cudd-2.4.2.ORIG/dddmp/dddmpDbg.c cudd-2.4.2/dddmp/dddmpDbg.c --- cudd-2.4.2.ORIG/dddmp/dddmpDbg.c 2004-02-18 09:23:31.000000000 -0700 +++ cudd-2.4.2/dddmp/dddmpDbg.c 2009-05-12 10:20:50.000000000 -0600 @@ -97,7 +97,8 @@ Dddmp_cuddBddDisplayBinary( while (fgets(buf, 999,fp)!=NULL) { fprintf (fpo, "%s", buf); if (strncmp(buf, ".nnodes", 7) == 0) { - sscanf (buf, "%*s %d", &nnodes); + if (sscanf (buf, "%*s %d", &nnodes) == EOF) + break; } if (strncmp(buf, ".rootids", 8) == 0) { break; @@ -141,7 +142,8 @@ Dddmp_cuddBddDisplayBinary( } - fgets(buf, 999,fp); + if (fgets(buf, 999,fp) == NULL) + buf[0] = '\0'; if (strncmp(buf, ".end", 4) != 0) { return (0); } diff -durp cudd-2.4.2.ORIG/dddmp/dddmpLoad.c cudd-2.4.2/dddmp/dddmpLoad.c --- cudd-2.4.2.ORIG/dddmp/dddmpLoad.c 2009-02-17 17:41:45.000000000 -0700 +++ cudd-2.4.2/dddmp/dddmpLoad.c 2009-05-12 10:20:50.000000000 -0600 @@ -1109,7 +1109,8 @@ DddmpCuddDdArrayLoad ( /*------------------------ Deal With the File Tail -----------------------*/ - fgets (buf, DDDMP_MAXSTRLEN-1,fp); + if (fgets (buf, DDDMP_MAXSTRLEN-1,fp) == NULL) + buf[0] = '\0'; Dddmp_CheckAndGotoLabel (!matchkeywd(buf, ".end"), "Error .end not found.", failure); @@ -1273,7 +1274,8 @@ DddmpBddReadHeader ( /* comment */ if (buf[0] == '#') { - fgets(buf,DDDMP_MAXSTRLEN,fp); + if (fgets(buf,DDDMP_MAXSTRLEN,fp) == NULL) + buf[0] = '\0'; continue; } @@ -1426,7 +1428,8 @@ DddmpBddReadHeader ( } if (matchkeywd(buf, ".nodes")) { - fgets(buf,DDDMP_MAXSTRLEN,fp); + if (fgets(buf,DDDMP_MAXSTRLEN,fp) == NULL) + buf[0] = '\0'; break; } diff -durp cudd-2.4.2.ORIG/dddmp/dddmpLoadCnf.c cudd-2.4.2/dddmp/dddmpLoadCnf.c --- cudd-2.4.2.ORIG/dddmp/dddmpLoadCnf.c 2004-02-20 01:35:56.000000000 -0700 +++ cudd-2.4.2/dddmp/dddmpLoadCnf.c 2009-05-12 10:20:50.000000000 -0600 @@ -554,7 +554,8 @@ DddmpBddReadHeaderCnf ( /* Init Problem Line */ if (buf[0] == 'p') { - fscanf (fp, "%*s %d %d", &nv, &nc); + if (fscanf (fp, "%*s %d %d", &nv, &nc) == EOF) + break; Hdr->nVarsCnf = nv; Hdr->nClausesCnf = nc; break; @@ -569,7 +570,8 @@ DddmpBddReadHeaderCnf ( /* Skip Comment? */ if (buf[0] != '.') { - fgets (buf, DDDMP_MAXSTRLEN, fp); + if (fgets (buf, DDDMP_MAXSTRLEN, fp) == NULL) + buf[0] = '\0'; continue; } @@ -811,7 +813,8 @@ DddmpReadCnfClauses ( /* Check for Comment */ if (word[0] == 'c') { /* Comment Found: Skip line */ - fgets (word, DDDMP_MAX_CNF_ROW_LENGTH-1, fp); + if (fgets (word, DDDMP_MAX_CNF_ROW_LENGTH-1, fp) == NULL) + word[0] = '\0'; break; } diff -durp cudd-2.4.2.ORIG/epd/epd.c cudd-2.4.2/epd/epd.c --- cudd-2.4.2.ORIG/epd/epd.c 2004-08-24 15:33:13.000000000 -0600 +++ cudd-2.4.2/epd/epd.c 2009-05-12 10:20:50.000000000 -0600 @@ -1094,7 +1094,8 @@ EpdGetExponentDecimal(double value) sprintf(str, "%E", value); pos = strstr(str, "E"); - sscanf(pos, "E%d", &exponent); + if (sscanf(pos, "E%d", &exponent) == EOF) + exponent = 0; return(exponent); } diff -durp cudd-2.4.2.ORIG/util/pipefork.c cudd-2.4.2/util/pipefork.c --- cudd-2.4.2.ORIG/util/pipefork.c 2009-02-17 07:18:57.000000000 -0700 +++ cudd-2.4.2/util/pipefork.c 2009-05-12 10:20:50.000000000 -0600 @@ -39,8 +39,10 @@ util_pipefork( * fildes[0] for reading from command * fildes[1] for writing to command */ - (void) pipe(topipe); - (void) pipe(frompipe); + if (pipe(topipe) < 0 || pipe(frompipe) < 0) { + fputs("Pipe creation failed.\n", stderr); + return 1; + } #ifdef __CYGWIN32__ if ((forkpid = fork()) == 0) {