aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorvan Hauser <vh@thc.org>2019-09-20 12:51:26 +0200
committervan Hauser <vh@thc.org>2019-09-20 12:51:26 +0200
commit272a43be11bff6f32b428901c92c06e769afa04a (patch)
tree06d38559e231de996fc20ddd3570b5ede8ab6525
parent63677bb1f963b2f6ee7157e94d471d3b1df8f162 (diff)
downloadafl++-272a43be11bff6f32b428901c92c06e769afa04a.tar.gz
fix persistent demo
-rw-r--r--experimental/persistent_demo/persistent_demo.c7
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') {