Module Name: src
Committed By: christos
Date: Sun Aug 28 15:52:22 UTC 2016
Modified Files:
src/crypto/external/bsd/netpgp/dist/src/netpgpverify: libverify.c
Log Message:
Avoid segv when the end signature is not found!
To generate a diff of this commit:
cvs rdiff -u -r1.10 -r1.11 \
src/crypto/external/bsd/netpgp/dist/src/netpgpverify/libverify.c
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
Modified files:
Index: src/crypto/external/bsd/netpgp/dist/src/netpgpverify/libverify.c
diff -u src/crypto/external/bsd/netpgp/dist/src/netpgpverify/libverify.c:1.10 src/crypto/external/bsd/netpgp/dist/src/netpgpverify/libverify.c:1.11
--- src/crypto/external/bsd/netpgp/dist/src/netpgpverify/libverify.c:1.10 Wed Jun 15 11:47:50 2016
+++ src/crypto/external/bsd/netpgp/dist/src/netpgpverify/libverify.c Sun Aug 28 11:52:22 2016
@@ -2016,7 +2016,7 @@ read_ascii_armor(pgpv_cursor_t *cursor,
litdata.s.data = p;
litdata.u.litdata.offset = (size_t)(p - mem->mem);
litdata.u.litdata.filename = (uint8_t *)strdup(filename);
- if ((p = find_bin_string(datastart = p, mem->size - litdata.offset, SIGSTART, strlen(SIGSTART))) == NULL) {
+ if ((p = find_bin_string(datastart = p, mem->size - litdata.offset, SIGSTART, sizeof(SIGSTART) - 1)) == NULL) {
snprintf(cursor->why, sizeof(cursor->why),
"malformed armor - no sig - at %zu", (size_t)(p - mem->mem));
return 0;
@@ -2030,7 +2030,13 @@ read_ascii_armor(pgpv_cursor_t *cursor,
return 0;
}
p += 2;
- sigend = find_bin_string(p, mem->size, SIGEND, strlen(SIGEND));
+ sigend = find_bin_string(p, mem->size, SIGEND, sizeof(SIGEND) - 1);
+ if (sigend == NULL) {
+ snprintf(cursor->why, sizeof(cursor->why),
+ "malformed armor - no end sig - at %zu",
+ (size_t)(p - mem->mem));
+ return 0;
+ }
binsigsize = b64decode((char *)p, (size_t)(sigend - p), binsig, sizeof(binsig));
read_binary_memory(cursor->pgp, "signature", cons_onepass, 15);