]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
fuzz: add env-file fuzzer
authorFrantisek Sumsal <frantisek@sumsal.cz>
Mon, 11 Mar 2019 11:42:26 +0000 (12:42 +0100)
committerFrantisek Sumsal <frantisek@sumsal.cz>
Mon, 11 Mar 2019 13:11:28 +0000 (14:11 +0100)
src/fuzz/fuzz-env-file.c [new file with mode: 0644]
src/fuzz/meson.build
test/fuzz/fuzz-env-file/simple-env-file [new file with mode: 0644]

diff --git a/src/fuzz/fuzz-env-file.c b/src/fuzz/fuzz-env-file.c
new file mode 100644 (file)
index 0000000..51df1aa
--- /dev/null
@@ -0,0 +1,31 @@
+/* SPDX-License-Identifier: LGPL-2.1+ */
+
+#include <errno.h>
+
+#include "alloc-util.h"
+#include "env-file.h"
+#include "fd-util.h"
+#include "fuzz.h"
+#include "strv.h"
+
+int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) {
+        _cleanup_fclose_ FILE *f = NULL;
+        _cleanup_strv_free_ char **rl = NULL, **rlp =  NULL;
+
+        if (size == 0)
+                return 0;
+
+        f = fmemopen((char*) data, size, "re");
+        assert_se(f);
+
+        /* We don't want to fill the logs with messages about parse errors.
+         * Disable most logging if not running standalone */
+        if (!getenv("SYSTEMD_LOG_LEVEL"))
+                log_set_max_level(LOG_CRIT);
+
+        (void) load_env_file(f, NULL, &rl);
+        assert_se(fseek(f, 0, SEEK_SET) == 0);
+        (void) load_env_file_pairs(f, NULL, &rlp);
+
+        return 0;
+}
index ba893cff94de09f87e9f6c4276b0828b01308998..d09006f640f45e517bb8a550909b459e39a411be 100644 (file)
@@ -116,4 +116,8 @@ fuzzers += [
         [['src/fuzz/fuzz-bus-label.c'],
          [libshared],
          []],
+
+        [['src/fuzz/fuzz-env-file.c'],
+         [libshared],
+         []],
 ]
diff --git a/test/fuzz/fuzz-env-file/simple-env-file b/test/fuzz/fuzz-env-file/simple-env-file
new file mode 100644 (file)
index 0000000..2cad6f7
--- /dev/null
@@ -0,0 +1,5 @@
+VARIABLE="value"
+OPTION="--option=1234"
+NUMBER=1
+EMPTY=""
+PATH=/var/lib/xxx