From: Ian Jackson Date: Sun, 27 Nov 2016 10:54:55 +0000 (+0000) Subject: regress: fuzzraw: read new fds from stream X-Git-Tag: adns-1.6.0~74 X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?p=adns.git;a=commitdiff_plain;h=963a228f0871ab49338cdc12583c7ac83b01de44;hp=b99b97f7ad6fecf61c598ca05847cfd13e790f89 regress: fuzzraw: read new fds from stream Signed-off-by: Ian Jackson --- diff --git a/regress/hfuzzraw.c.m4 b/regress/hfuzzraw.c.m4 index 24aff42..1598045 100644 --- a/regress/hfuzzraw.c.m4 +++ b/regress/hfuzzraw.c.m4 @@ -216,15 +216,17 @@ int H$1(hm_args_massage($3,void)) { m4_define(`hm_rv_fd',` hm_rv_succfail if (!r) { - for (;;) { - assert(r < 1000); - if (r >= fdtab.used) - if (!adns__vbuf_append(&fdtab,"\0",1)) Tnomem(); - assert(r < fdtab.used); - if (!(fdtab.buf[r] & FDF_OPEN)) break; - r++; + int newfd; + P_READ(newfd); + if (newfd<0 || newfd>1000) Pformat("new fd out of range"); + adns__vbuf_ensure(&fdtab, newfd+1); + if (fdtab.used <= newfd) { + memset(fdtab.buf+fdtab.used, 0, newfd+1-fdtab.used); + fdtab.used= newfd+1; } - fdtab.buf[r] |= FDF_OPEN; + if (fdtab.buf[newfd]) Pformat("new fd already in use"); + fdtab.buf[newfd] |= FDF_OPEN; + r= newfd; } ') $2