Better fix for crash
authorJeremy Harris <jgh146exb@wizmail.org>
Sun, 12 Apr 2020 21:24:21 +0000 (22:24 +0100)
committerJeremy Harris <jgh146exb@wizmail.org>
Sun, 12 Apr 2020 21:24:21 +0000 (22:24 +0100)
Broken-by: 0b4dfe7aa1
src/src/verify.c

index 73d2d7659e709f9dae37db09c89afe787ad8f71e..9955bd1ff6d7cd983c4b0e5d8c5ce38d2632e3f8 100644 (file)
@@ -2945,17 +2945,20 @@ if (*t == 0 || (*t == '/' && t != ss))
   return ERROR;
   }
 
-/* See if there is a semicolon in the pattern */
+/* See if there is a semicolon in the pattern, separating a searchtype
+prefix.  If there is one then check for comma-sep options. */
 
 if ((semicolon = Ustrchr(ss, ';')))
-  {
-  endname = (opts = Ustrchr(ss, ',')) ? opts : semicolon;
-  if (opts)
+  if ((opts = Ustrchr(ss, ',')) && opts < semicolon)
     {
-    opts++;
+    endname = opts++;
     opts = string_copyn(opts, semicolon - opts);
     }
-  }
+  else
+    {
+    endname = semicolon;
+    opts = NULL;
+    }
 
 /* If we are doing an IP address only match, then all lookups must be IP
 address lookups, even if there is no "net-". */