Module Name: othersrc Committed By: agc Date: Wed Feb 5 17:43:17 UTC 2014
Modified Files: othersrc/external/bsd/multigest/dist: multigest.c Log Message: give correct results when running the digest when an mmap(2) fails but read(2) succeeds To generate a diff of this commit: cvs rdiff -u -r1.6 -r1.7 othersrc/external/bsd/multigest/dist/multigest.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: othersrc/external/bsd/multigest/dist/multigest.c diff -u othersrc/external/bsd/multigest/dist/multigest.c:1.6 othersrc/external/bsd/multigest/dist/multigest.c:1.7 --- othersrc/external/bsd/multigest/dist/multigest.c:1.6 Thu Aug 22 01:08:10 2013 +++ othersrc/external/bsd/multigest/dist/multigest.c Wed Feb 5 17:43:17 2014 @@ -669,6 +669,7 @@ uint8_t * multigest_file(const char *alg, const char *f, uint8_t *raw, const char *pat, const char *repl) { struct stat st; + multigest_t m; ssize_t rc; size_t size; size_t cc; @@ -676,6 +677,9 @@ multigest_file(const char *alg, const ch FILE *fp; if (f && alg && raw) { + memset(&m, 0x0, sizeof(m)); + multigest_init(&m, alg); + multigest_add_subst(&m, pat, repl); if ((fp = fopen(f, "r")) == NULL) { fprintf(stderr, "can't open '%s'\n", f); return 0; @@ -689,14 +693,16 @@ multigest_file(const char *alg, const ch if ((rc = read(fileno(fp), mapped, MB(1))) <= 0) { break; } - multigest_data(alg, mapped, (size_t)rc, raw, pat, repl); + multigest_update(&m, mapped, (size_t)rc); } free(mapped); } else { - multigest_data(alg, mapped, size, raw, pat, repl); + multigest_update(&m, mapped, (size_t)size); munmap(mapped, size); } fclose(fp); + multigest_final(&m, raw); + multigest_free(&m); return raw; } return NULL;