chiark / gitweb /
regress: Introduce FUZZRAW_SYNC
authorIan Jackson <ijackson@chiark.greenend.org.uk>
Sun, 27 Nov 2016 19:48:04 +0000 (19:48 +0000)
committerIan Jackson <ijackson@chiark.greenend.org.uk>
Thu, 11 Jun 2020 15:13:02 +0000 (16:13 +0100)
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
regress/Makefile.in
regress/hfuzzraw.c.m4
regress/hplayback.c.m4

index 36ff10f071e92825e2f5d4637db0202a1038099e..d378d23e1f35085a5e8d4c26ff39d46716abfa39 100644 (file)
@@ -34,6 +34,7 @@ include               $(srcdir)/../src/adns.make
 DIRCFLAGS=     -I../src -I$(srcdir) -I$(srcdir)/../src
 
 HCPPFLAGS=     -DADNS_REGRESS_TEST -I.
+#HCPPFLAGS+=   -DFUZZRAW_SYNC
 
 REDIRLIBOBJS=  $(addsuffix _d.o, $(basename $(LIBOBJS)))
 HARNLOBJS=     hcommon.o $(REDIRLIBOBJS)
index c2c44cb186bdcd19c124fc6712d2f1610709b2be..16475bf3f39867b25c21bdd12236755dcbcb7eb5 100644 (file)
@@ -188,6 +188,13 @@ static void Pfdset(fd_set *set, int max, int *r_io) {
   }
 }
 
+#ifdef FUZZRAW_SYNC
+static void Psync(const char *exp, char *got, size_t sz, const char *what) {
+  P_read(got,sz,"syscall");
+  if (memcmp(exp,got,sz)) Pformat(what);
+}
+#endif
+
 #ifdef HAVE_POLL
 static void Ppollfds(struct pollfd *fds, int nfds, int *r_io) {
   int fd;
@@ -236,6 +243,12 @@ int H$1(hm_args_massage($3,void)) {
    Q$1(hm_args_massage($3));
  }
 
+#ifdef FUZZRAW_SYNC
+  static const char sync_expect[]= "$1";
+  static char sync_got[sizeof(sync_expect)];
+  Psync(sync_expect, sync_got, sizeof(sync_got), "sync lost: exp=$1");
+#endif
+
  m4_define(`hm_rv_succfail',`
   r= P_succfail();
   if (r<0) return r;
index 26660d07eb967f9bde87fbc3ac1c54d09b2e60d3..96da8dfb37fa77e07af48b03a773002233d8de5f 100644 (file)
@@ -381,6 +381,10 @@ int H$1(hm_args_massage($3,void)) {
  vb2.buf[amtread]= 0;
  if (memcmp(vb2.buf," $1=",hm_r_offset)) Psyntax("syscall reply mismatch");
 
+#ifdef FUZZRAW_SYNC
+ FR_WRITE("$1");
+#endif
+
  m4_define(`hm_rv_check_errno',`
  if (vb2.buf[hm_r_offset] == hm_squoteEhm_squote) {
   int e;