瀏覽代碼

Fix additional leaks in #22103 tests

test_options_validate_impl() incorrectly executed subsequent phases of
config parsing and validation after an expected error.  This caused
msg to leak when those later phases (which would likely produce errors
as well) overwrote it.
Taylor Yu 7 年之前
父節點
當前提交
38a13b91a8
共有 1 個文件被更改,包括 4 次插入0 次删除
  1. 4 0
      src/test/test_options.c

+ 4 - 0
src/test/test_options.c

@@ -187,6 +187,8 @@ test_options_validate_impl(const char *configuration,
       goto done;
   }
   tt_int_op((r == 0), OP_EQ, (msg == NULL));
+  if (r)
+    goto done;
 
   r = config_assign(&options_format, opt, cl, 0, &msg);
   if (phase == PH_ASSIGN) {
@@ -196,6 +198,8 @@ test_options_validate_impl(const char *configuration,
       goto done;
   }
   tt_int_op((r == 0), OP_EQ, (msg == NULL));
+  if (r)
+    goto done;
 
   r = options_validate(NULL, opt, dflt, 0, &msg);
   if (phase == PH_VALIDATE) {