chiark / gitweb /
SECURITY: adns: Do not corrupt pointer when nameserver speaks first
[adns.git] / regress / hcommon.c.m4
index 7ca28c1952c5d2259cf07d5733bfce2d89285f4d..6f29b41a15abc594d8f3ce2a0424f85abfea528d 100644 (file)
@@ -3,7 +3,8 @@ m4_dnl (part of complex test harness, not of the library)
 m4_dnl - routines used for both record and playback
 
 m4_dnl  This file is part of adns, which is
-m4_dnl    Copyright (C) 1997-2000,2003,2006  Ian Jackson
+m4_dnl    Copyright (C) 1997-2000,2003,2006,2014-2016  Ian Jackson
+m4_dnl    Copyright (C) 2014  Mark Wooding
 m4_dnl    Copyright (C) 1999-2000,2003,2006  Tony Finch
 m4_dnl    Copyright (C) 1991 Massachusetts Institute of Technology
 m4_dnl  (See the file INSTALL for full details.)
@@ -19,8 +20,7 @@ m4_dnl  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 m4_dnl  GNU General Public License for more details.
 m4_dnl  
 m4_dnl  You should have received a copy of the GNU General Public License
-m4_dnl  along with this program; if not, write to the Free Software Foundation,
-m4_dnl  Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. 
+m4_dnl  along with this program; if not, write to the Free Software Foundation.
 
 m4_include(hmacros.i4)
 
@@ -160,6 +160,11 @@ void Tvbfdset(int max, const fd_set *fds) {
   int i;
   const char *comma= "";
   
+  if (!fds) {
+    Tvba("null");
+    return;
+  }
+
   Tvba("[");
   for (i=0; i<max; i++) {
     if (!FD_ISSET(i,fds)) continue;
@@ -301,12 +306,12 @@ void *Hrealloc(void *op, size_t nsz) {
 
   if (op) { oldnode= (void*)((char*)op - MALLOCHSZ); osz= oldnode->sz; } else { osz= 0; }
   np= Hmalloc(nsz);
-  memcpy(np,op, osz>nsz ? nsz : osz);
+  if (osz) memcpy(np,op, osz>nsz ? nsz : osz);
   Hfree(op);
   return np;
 }
 
-void Hexit(int rv) {
+void Texit(int rv) {
   struct malloced *loopnode;
 
   Tshutdown();
@@ -322,6 +327,13 @@ void Hexit(int rv) {
   exit(rv);
 }
 
+void Hexit(int rv) {
+  vb.used= 0;
+  Tvbf("exit %d", rv);
+  Q_vb();
+  Texit(0);
+}
+
 pid_t Hgetpid(void) {
   return 2264; /* just some number */
 }