chiark / gitweb /
setup.c: Do not fail assertion if `search' with no options in resolv.conf
authorIan Jackson <ijackson@chiark.greenend.org.uk>
Sat, 19 Nov 2016 19:41:06 +0000 (19:41 +0000)
committerIan Jackson <ijackson@chiark.greenend.org.uk>
Tue, 26 May 2020 19:14:26 +0000 (20:14 +0100)
(Found by AFL.)

Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
src/setup.c

index 8ff92d284e5bf4a89955f336795479417d28ade1..54b93a89d0d763b0972a6da17158732d158aa76d 100644 (file)
@@ -147,11 +147,17 @@ static void ccf_search(adns_state ads, const char *fn,
   tl= 0;
   while (nextword(&bufp,&word,&l)) { count++; tl += l+1; }
 
-  newptrs= malloc(sizeof(char*)*count);
-  if (!newptrs) { saveerr(ads,errno); return; }
-
-  newchars= malloc(tl);
-  if (!newchars) { saveerr(ads,errno); free(newptrs); return; }
+  if (count) {
+    newptrs= malloc(sizeof(char*)*count);
+    if (!newptrs) { saveerr(ads,errno); return; }
+
+    newchars= malloc(tl);
+    if (!newchars) { saveerr(ads,errno); free(newptrs); return; }
+  } else {
+    assert(!tl);
+    newptrs= 0;
+    newchars= 0;
+  }
 
   bufp= buf;
   pp= newptrs;