diff -dur cudd-2.4.1.ORIG/dddmp/dddmpDbg.c cudd-2.4.1/dddmp/dddmpDbg.c
--- cudd-2.4.1.ORIG/dddmp/dddmpDbg.c 2004-02-18 09:23:31.000000000 -0700
+++ cudd-2.4.1/dddmp/dddmpDbg.c 2006-02-20 16:05:04.000000000 -0700
@@ -97,7 +97,8 @@
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 @@
}
- fgets(buf, 999,fp);
+ if (fgets(buf, 999,fp) == NULL)
+ buf[0] = '\0';
if (strncmp(buf, ".end", 4) != 0) {
return (0);
}
diff -dur cudd-2.4.1.ORIG/dddmp/dddmpLoad.c cudd-2.4.1/dddmp/dddmpLoad.c
--- cudd-2.4.1.ORIG/dddmp/dddmpLoad.c 2004-02-18 09:24:00.000000000 -0700
+++ cudd-2.4.1/dddmp/dddmpLoad.c 2006-02-20 16:02:11.000000000 -0700
@@ -1109,7 +1109,8 @@
/*------------------------ 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 @@
/* comment */
if (buf[0] == '#') {
- fgets(buf,DDDMP_MAXSTRLEN,fp);
+ if (fgets(buf,DDDMP_MAXSTRLEN,fp) == NULL)
+ buf[0] = '\0';
continue;
}
@@ -1424,7 +1426,8 @@
}
if (matchkeywd(buf, ".nodes")) {
- fgets(buf,DDDMP_MAXSTRLEN,fp);
+ if (fgets(buf,DDDMP_MAXSTRLEN,fp) == NULL)
+ buf[0] = '\0';
break;
}
diff -dur cudd-2.4.1.ORIG/dddmp/dddmpLoadCnf.c cudd-2.4.1/dddmp/dddmpLoadCnf.c
--- cudd-2.4.1.ORIG/dddmp/dddmpLoadCnf.c 2004-02-20 01:35:56.000000000 -0700
+++ cudd-2.4.1/dddmp/dddmpLoadCnf.c 2006-02-20 16:04:02.000000000 -0700
@@ -554,7 +554,8 @@
/* 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 @@
/* 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 @@
/* 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 -dur cudd-2.4.1.ORIG/epd/epd.c cudd-2.4.1/epd/epd.c
--- cudd-2.4.1.ORIG/epd/epd.c 2004-08-24 15:33:13.000000000 -0600
+++ cudd-2.4.1/epd/epd.c 2006-02-20 16:07:56.000000000 -0700
@@ -1094,7 +1094,8 @@
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 -dur cudd-2.4.1.ORIG/util/pipefork.c cudd-2.4.1/util/pipefork.c
--- cudd-2.4.1.ORIG/util/pipefork.c 2004-08-17 18:07:57.000000000 -0600
+++ cudd-2.4.1/util/pipefork.c 2006-02-20 16:07:06.000000000 -0700
@@ -39,8 +39,10 @@
* 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) {