Audit concat() in libutil
Be more pedantic about the error-checking, fread can also return values > 0 even though there has been a read-error. We want to write the last incoming data and then bail.
This commit is contained in:
		| @@ -10,12 +10,13 @@ concat(FILE *fp1, const char *s1, FILE *fp2, const char *s2) | |||||||
| 	char buf[BUFSIZ]; | 	char buf[BUFSIZ]; | ||||||
| 	size_t n; | 	size_t n; | ||||||
|  |  | ||||||
| 	while ((n = fread(buf, 1, sizeof(buf), fp1)) > 0) { | 	while ((n = fread(buf, 1, sizeof(buf), fp1))) { | ||||||
| 		if (fwrite(buf, 1, n, fp2) != n) | 		fwrite(buf, 1, n, fp2); | ||||||
| 			eprintf("%s: write error:", s2); | 		if (ferror(fp2)) | ||||||
| 		if (feof(fp1)) | 			eprintf("fwrite %s:", s2); | ||||||
|  | 		if (feof(fp1) || ferror(fp1)) | ||||||
| 			break; | 			break; | ||||||
| 	} | 	} | ||||||
| 	if (ferror(fp1)) | 	if (ferror(fp1)) | ||||||
| 		eprintf("%s: read error:", s1); | 		eprintf("fread %s", s1); | ||||||
| } | } | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user