Fix argument checking for ${readsocket }
authorJeremy Harris <jgh146exb@wizmail.org>
Thu, 26 Mar 2020 16:05:19 +0000 (16:05 +0000)
committerJeremy Harris <jgh146exb@wizmail.org>
Thu, 26 Mar 2020 16:05:19 +0000 (16:05 +0000)
doc/doc-txt/ChangeLog
src/src/expand.c
test/scripts/0000-Basic/0373
test/stdout/0373

index be07ba625d8acf76b751d4e482b3cab5f3989a7f..7e5de88806fd3ef739bba69b805de83e020bd336 100644 (file)
@@ -156,6 +156,9 @@ JH/33 Fix the dsearch lookup to return an untainted result.  Previously the
       taint of the lookup key was maintained; we now regard the presence in the
       filesystem as sufficient validation.
 
       taint of the lookup key was maintained; we now regard the presence in the
       filesystem as sufficient validation.
 
+JH/34 Fix the readsocket expansion to not segfault when an empty "options"
+      argument is supplied.
+
 
 Exim version 4.93
 -----------------
 
 Exim version 4.93
 -----------------
index fddad3179b09840d747cf353513fd6043e17d0a2..f937ac33743be2d2802df40bb5e1839bc740c7bc 100644 (file)
@@ -5335,8 +5335,9 @@ while (*s != 0)
        uschar * item;
        int sep = 0;
 
        uschar * item;
        int sep = 0;
 
-       item = string_nextinlist(&list, &sep, NULL, 0);
-        if ((timeout = readconf_readtime(item, 0, FALSE)) < 0)
+       if (  !(item = string_nextinlist(&list, &sep, NULL, 0))
+          || !*item
+          || (timeout = readconf_readtime(item, 0, FALSE)) < 0)
           {
           expand_string_message = string_sprintf("bad time value %s", item);
           goto EXPAND_FAILED;
           {
           expand_string_message = string_sprintf("bad time value %s", item);
           goto EXPAND_FAILED;
index 02cdc31fc8bc2e2964ce5bfce524ac9bf07f7f17..0f63cee9bf0492514a182392ade13bc8ffc3c63f 100644 (file)
@@ -102,3 +102,7 @@ exim -be
 10 >>${readsocket{inet:badloop:PORT_S}{QUERY-10\n}}<<
 11 >>${readsocket{inet:thisloop:PORT_S}{QUERY-11\n}{2s:shutdown=no}}<<
 ****
 10 >>${readsocket{inet:badloop:PORT_S}{QUERY-10\n}}<<
 11 >>${readsocket{inet:thisloop:PORT_S}{QUERY-11\n}{2s:shutdown=no}}<<
 ****
+#
+exim -be
+crash-regression-check >>${readsocket{inet:127.0.0.1:PORT_N}{}{}}<<
+****
index b6f6f1905abc93ef29ed0b2ff98de31323c11ea8..a4acc6591ba3153b4bebc44287dc7386f94e5027 100644 (file)
@@ -28,6 +28,8 @@
 > 11 >>ANSWER-11
 <<
 > 
 > 11 >>ANSWER-11
 <<
 > 
+> Failed: bad time value NULL
+> 
 
 ******** SERVER ********
 Listening on TESTSUITE/test-socket ... 
 
 ******** SERVER ********
 Listening on TESTSUITE/test-socket ...