]> granicus.if.org Git - gc/commitdiff
Fix null-pointer dereference in CORD_substr_closure
authorIvan Maidanski <ivmai@mail.ru>
Tue, 11 Sep 2012 19:55:32 +0000 (23:55 +0400)
committerIvan Maidanski <ivmai@mail.ru>
Tue, 11 Sep 2012 19:55:32 +0000 (23:55 +0400)
* cord/cordbscs.c (CORD_substr_closure): Prevent SEGV if CORD_from_fn
returned NULL/CORD_EMPTY (in case "n" argument is zero).

cord/cordbscs.c

index 2231963fb0cbd58f3b8e179664f63e0155ce0738..c7b3b51f2201546ad57d1826cd651f05fc31ca08 100644 (file)
@@ -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);
 }