]> Cypherpunks repositories - keks.git/commitdiff
Fuzz program for cyac
authorSergey Matveev <stargrave@stargrave.org>
Wed, 11 Dec 2024 13:51:04 +0000 (16:51 +0300)
committerSergey Matveev <stargrave@stargrave.org>
Wed, 11 Dec 2024 14:16:06 +0000 (17:16 +0300)
cyac/cmd/for-fuzz/.gitignore [new file with mode: 0644]
cyac/cmd/for-fuzz/all.do [new file with mode: 0644]
cyac/cmd/for-fuzz/clean [new file with mode: 0755]
cyac/cmd/for-fuzz/for-fuzz.c [new file with mode: 0644]
cyac/cmd/for-fuzz/for-fuzz.do [new file with mode: 0644]

diff --git a/cyac/cmd/for-fuzz/.gitignore b/cyac/cmd/for-fuzz/.gitignore
new file mode 100644 (file)
index 0000000..47a1061
--- /dev/null
@@ -0,0 +1 @@
+/for-fuzz
diff --git a/cyac/cmd/for-fuzz/all.do b/cyac/cmd/for-fuzz/all.do
new file mode 100644 (file)
index 0000000..28d6c69
--- /dev/null
@@ -0,0 +1 @@
+redo-ifchange for-fuzz
diff --git a/cyac/cmd/for-fuzz/clean b/cyac/cmd/for-fuzz/clean
new file mode 100755 (executable)
index 0000000..444b658
--- /dev/null
@@ -0,0 +1,3 @@
+#!/bin/sh -e
+
+exec rm -f for-fuzz
diff --git a/cyac/cmd/for-fuzz/for-fuzz.c b/cyac/cmd/for-fuzz/for-fuzz.c
new file mode 100644 (file)
index 0000000..bf366c0
--- /dev/null
@@ -0,0 +1,40 @@
+#include <assert.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+#include <yac/err.h>
+#include <yac/items.h>
+
+#include "../lib/mmap.h"
+
+int
+main(int argc, char **argv)
+{
+    assert(argc == 2);
+    size_t len = 0;
+    unsigned char *buf = NULL;
+    if (!Mmap(&buf, &len, argv[1])) {
+        exit(EXIT_FAILURE);
+    }
+    struct YACItems items;
+    enum YACErr err = YACItemsInit(&items);
+    if (err != YACErrNo) {
+        return EXIT_FAILURE;
+    }
+    size_t off = 0;
+    err = YACItemsParse(&items, &off, buf, len);
+    if (err != YACErrNo) {
+        return EXIT_SUCCESS;
+    }
+    {
+        const size_t tailLen = len - off;
+        unsigned char *dst = malloc(len);
+        assert(dst != NULL);
+        off = 0;
+        assert(YACItemsEncode(&items, 0, &off, dst, len));
+        assert(off == len - tailLen);
+        assert(memcmp(dst, buf, len - tailLen) == 0);
+    }
+    return EXIT_SUCCESS;
+}
diff --git a/cyac/cmd/for-fuzz/for-fuzz.do b/cyac/cmd/for-fuzz/for-fuzz.do
new file mode 100644 (file)
index 0000000..ce78095
--- /dev/null
@@ -0,0 +1,8 @@
+deps=../lib/mmap.o
+redo-ifchange $1.c $deps \
+    ../../conf/cc ../../conf/cflags ../../conf/ldflags ../../conf/prefix
+read CC <../../conf/cc
+CFLAGS=$(cat ../../conf/cflags)
+LDFLAGS=$(cat ../../conf/ldflags)
+read PREFIX <../../conf/prefix
+$CC $CFLAGS -I$PREFIX/include -o $3 $2.c $deps $LDFLAGS -L$PREFIX/lib -lyac -lm -static