From 3b1cc3c97cd9bfa4bf8446e01b5211647be65a7d Mon Sep 17 00:00:00 2001 From: Ian Jackson Date: Thu, 1 Dec 2016 02:24:27 +0000 Subject: [PATCH] regress: fuzzraw: Introduce hm_rv_wlen This lets us stop AFL causing us to tell adns that write returned stupidly large answers. Signed-off-by: Ian Jackson --- regress/hfuzzraw.c.m4 | 4 ++++ regress/hmacros.i4 | 1 + regress/hsyscalls.i4 | 7 ++++--- 3 files changed, 9 insertions(+), 3 deletions(-) diff --git a/regress/hfuzzraw.c.m4 b/regress/hfuzzraw.c.m4 index 5ce1b3e..b2e82fd 100644 --- a/regress/hfuzzraw.c.m4 +++ b/regress/hfuzzraw.c.m4 @@ -308,6 +308,10 @@ int H$1(hm_args_massage($3,void)) { r= newfd; } ') + m4_define(`hm_rv_wlen',` + hm_rv_any + if (r>$'`1) Pformat("write return value too large"); + ') $2 hm_create_nothing diff --git a/regress/hmacros.i4 b/regress/hmacros.i4 index 83f5f25..3119f27 100644 --- a/regress/hmacros.i4 +++ b/regress/hmacros.i4 @@ -59,6 +59,7 @@ m4_define(`hm_create_nothing', ` m4_define(`hm_rv_fd', `') m4_define(`hm_rv_succfail', `') m4_define(`hm_rv_len', `') + m4_define(`hm_rv_wlen', `hm_rv_any') m4_define(`hm_rv_fcntl', `') m4_define(`hm_rv_select', `hm_rv_any') m4_define(`hm_rv_poll', `hm_rv_any') diff --git a/regress/hsyscalls.i4 b/regress/hsyscalls.i4 index 9bb6c3d..fc76fd1 100644 --- a/regress/hsyscalls.i4 +++ b/regress/hsyscalls.i4 @@ -29,7 +29,8 @@ m4_dnl hm_rv_must must succeed and return 0 m4_dnl hm_rv_any any nonnegative return allowed, -1 means see errno m4_dnl hm_rv_fd file descriptor is returned, -1 means see errno m4_dnl hm_rv_succfail returns 0 (ok) or -1 (see errno) -m4_dnl hm_rv_len() returns length read/written, must be <=max, -1 => errno +m4_dnl hm_rv_len() returns length read, must be <=max, -1 => errno +m4_dnl hm_rv_wlen() returns length written, must be <=max, -1 => errno m4_dnl hm_rv_fcntl syscall is fcntl, do special processing m4_dnl hm_rv_select select, do special processing } default is _any m4_dnl hm_rv_poll poll, do special processing } after create_nothing @@ -103,7 +104,7 @@ hm_syscall( ') hm_syscall( - sendto, `hm_rv_any', ` + sendto, `hm_rv_wlen(msglen)', ` hm_arg_fd(fd) hm_na hm_arg_bytes_in(void,msg,int,msglen) hm_na hm_arg_must(unsigned int,flags,0) hm_na @@ -125,7 +126,7 @@ hm_syscall( ') hm_syscall( - write, `hm_rv_any', ` + write, `hm_rv_wlen(len)', ` hm_arg_fd(fd) hm_na hm_arg_bytes_in(void,buf,size_t,len) hm_na ') -- 2.30.2