diff options
author | van Hauser <vh@thc.org> | 2019-09-20 12:51:26 +0200 |
---|---|---|
committer | van Hauser <vh@thc.org> | 2019-09-20 12:51:26 +0200 |
commit | 272a43be11bff6f32b428901c92c06e769afa04a (patch) | |
tree | 06d38559e231de996fc20ddd3570b5ede8ab6525 | |
parent | 63677bb1f963b2f6ee7157e94d471d3b1df8f162 (diff) | |
download | afl++-272a43be11bff6f32b428901c92c06e769afa04a.tar.gz |
fix persistent demo
-rw-r--r-- | experimental/persistent_demo/persistent_demo.c | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/experimental/persistent_demo/persistent_demo.c b/experimental/persistent_demo/persistent_demo.c index 0b1e2989..d091febe 100644 --- a/experimental/persistent_demo/persistent_demo.c +++ b/experimental/persistent_demo/persistent_demo.c @@ -33,6 +33,7 @@ int main(int argc, char** argv) { + ssize_t len; /* how much input did we read? */ char buf[100]; /* Example-only buffer, you'd replace it with other global or local variables appropriate for your use case. */ @@ -57,11 +58,15 @@ int main(int argc, char** argv) { Beware of reading from buffered FILE* objects such as stdin. Use raw file descriptors or call fopen() / fdopen() in every pass. */ - read(0, buf, 100); + len = read(0, buf, 100); /* STEP 3: This is where we'd call the tested library on the read data. We just have some trivial inline code that faults on 'foo!'. */ + /* do we have enough data? */ + if (len < 4) + return 0; + if (buf[0] == 'f') { printf("one\n"); if (buf[1] == 'o') { |