diff -ur mtr-0.22/configure.in mtr-0.23/configure.in
--- mtr-0.22/configure.in Sun Oct 18 14:23:08 1998
+++ mtr-0.23/configure.in Sat Oct 24 00:24:09 1998
@@ -1,5 +1,5 @@
AC_INIT(mtr.c)
-AM_INIT_AUTOMAKE(mtr, 0.22)
+AM_INIT_AUTOMAKE(mtr, 0.23)
AC_SUBST(GTK_OBJ)
AC_SUBST(CURSES_OBJ)
diff -ur mtr-0.22/dns.c mtr-0.23/dns.c
--- mtr-0.22/dns.c Sun Oct 18 14:22:32 1998
+++ mtr-0.23/dns.c Fri Oct 23 17:44:43 1998
@@ -271,15 +271,29 @@
/* Code */
+
+#ifdef CorruptCheck
+#define TOT_SLACK 2
+#define HEAD_SLACK 1
+/* Need an entry for sparc systems here too.
+ Don't try this on Sparc for now. */
+#else
+#ifdef sparc
+#define TOT_SLACK 2
+#define HEAD_SLACK 2
+#else
+#define TOT_SLACK 1
+#define HEAD_SLACK 1
+#endif
+#endif
+
+
void *statmalloc(size_t size){
void *p;
size_t mallocsize;
mem+= size;
-#ifdef CorruptCheck
- mallocsize = size + (sizeof(dword)) + sizeof(dword);
-#else
- mallocsize = size + (sizeof(dword));
-#endif
+ mallocsize = size + TOT_SLACK * sizeof(dword);
+
p = malloc(mallocsize);
if (!p){
fprintf(stderr,"malloc() of %u bytes failed: %s\n",size,strerror(errno));
@@ -292,7 +306,7 @@
*(byte *)((char *)p + size + sizeof(dword) + sizeof(byte) * 2) = 0xbe;
*(byte *)((char *)p + size + sizeof(dword) + sizeof(byte) * 3) = 0xef;
#endif
- p = (void *)((dword *)p + 1);
+ p = (void *)((dword *)p + HEAD_SLACK);
#ifdef WipeMallocs
memset(p,0xf0,size);
#endif
@@ -301,12 +315,12 @@
void statfree(void *p){
if (p){
- if (*((dword *)p - 1) == 0){
+ if (*((dword *)p - HEAD_SLACK) == 0){
fprintf(stderr,"ERROR: Attempt to free pointer twice.\n");
*(int*)0=0;
exit(-1);
} else {
- if (*((dword *)p - 1) > 8192){
+ if (*((dword *)p - HEAD_SLACK) > 8192){
fprintf(stderr,"ERROR: Corrupted free() buffer. (header)\n");
*(int*)0=0;
exit(-1);
@@ -321,12 +335,12 @@
exit(-1);
}
#endif
- mem-= *((dword *)p - 1);
+ mem-= *((dword *)p - HEAD_SLACK);
#ifdef WipeFrees
- memset(p,0xfe,*((dword *)p - 1));
+ memset(p,0xfe,*((dword *)p - HEAD_SLACK));
*((dword *)p - 1) = 0;
#endif
- free((dword *)p - 1);
+ free((dword *)p - HEAD_SLACK);
}
}
}
@@ -430,7 +444,7 @@
fprintf(stderr,"statmalloc() failed: %s\n",strerror(errno));
exit(-1);
}
- bzero(rp,sizeof(struct resolve));
+ memset(rp,0, sizeof(struct resolve));
return rp;
}
.