From 69df170851aee5a5c972bce0c3eb4729d2f73c85be8d42c3829ba22e42d7487d Mon Sep 17 00:00:00 2001 From: Sergey Matveev Date: Wed, 11 Dec 2024 16:51:04 +0300 Subject: [PATCH] Fuzz program for cyac --- cyac/cmd/for-fuzz/.gitignore | 1 + cyac/cmd/for-fuzz/all.do | 1 + cyac/cmd/for-fuzz/clean | 3 +++ cyac/cmd/for-fuzz/for-fuzz.c | 40 +++++++++++++++++++++++++++++++++++ cyac/cmd/for-fuzz/for-fuzz.do | 8 +++++++ 5 files changed, 53 insertions(+) create mode 100644 cyac/cmd/for-fuzz/.gitignore create mode 100644 cyac/cmd/for-fuzz/all.do create mode 100755 cyac/cmd/for-fuzz/clean create mode 100644 cyac/cmd/for-fuzz/for-fuzz.c create mode 100644 cyac/cmd/for-fuzz/for-fuzz.do diff --git a/cyac/cmd/for-fuzz/.gitignore b/cyac/cmd/for-fuzz/.gitignore new file mode 100644 index 0000000..47a1061 --- /dev/null +++ b/cyac/cmd/for-fuzz/.gitignore @@ -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 index 0000000..28d6c69 --- /dev/null +++ b/cyac/cmd/for-fuzz/all.do @@ -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 index 0000000..444b658 --- /dev/null +++ b/cyac/cmd/for-fuzz/clean @@ -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 index 0000000..bf366c0 --- /dev/null +++ b/cyac/cmd/for-fuzz/for-fuzz.c @@ -0,0 +1,40 @@ +#include +#include +#include +#include + +#include +#include + +#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 index 0000000..ce78095 --- /dev/null +++ b/cyac/cmd/for-fuzz/for-fuzz.do @@ -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 -- 2.50.0