summaryrefslogtreecommitdiff
path: root/cord
diff options
context:
space:
mode:
authorIvan Maidanski <ivmai@mail.ru>2012-09-11 23:55:32 +0400
committerIvan Maidanski <ivmai@mail.ru>2012-09-11 23:55:32 +0400
commit3f5951f63fea36032b1fb65f5211ffaf4d03e74e (patch)
treeaf59dc9cbe9fc8a26802bca153411ef865dce424 /cord
parenta4530754bedcb4a0c6679a5c72c4bca0d63a5977 (diff)
downloadbdwgc-3f5951f63fea36032b1fb65f5211ffaf4d03e74e.tar.gz
Fix null-pointer dereference in CORD_substr_closure
* cord/cordbscs.c (CORD_substr_closure): Prevent SEGV if CORD_from_fn returned NULL/CORD_EMPTY (in case "n" argument is zero).
Diffstat (limited to 'cord')
-rw-r--r--cord/cordbscs.c1
1 files changed, 1 insertions, 0 deletions
diff --git a/cord/cordbscs.c b/cord/cordbscs.c
index 2231963f..c7b3b51f 100644
--- a/cord/cordbscs.c
+++ b/cord/cordbscs.c
@@ -354,6 +354,7 @@ CORD CORD_substr_closure(CORD x, size_t i, size_t n, CORD_fn f)
sa->sa_cord = (CordRep *)x;
sa->sa_index = i;
result = CORD_from_fn(f, (void *)sa, n);
+ if (result == CORD_EMPTY) return CORD_EMPTY; /* n == 0 */
((CordRep *)result) -> function.header = SUBSTR_HDR;
return (result);
}