1 diff --git a/lib/ftchash.c b/lib/ftchash.c
2 index 9cc7efa..28bafbf 100644
5 @@ -326,7 +326,7 @@ void *ftchash_foreach(struct ftchash *ft
6 (char*)ftch->traverse_chunk->base+ftch->traverse_chunk->next) {
8 ret = ftch->traverse_rec;
9 - (char*)ftch->traverse_rec += ftch->d_size;
10 + ftch->traverse_rec = vpadd(ftch->traverse_rec, ftch->d_size);
14 diff --git a/lib/ftio.c b/lib/ftio.c
15 index f6c739c..1082416 100644
18 @@ -2267,7 +2267,7 @@ int readn(register int fd, register void
22 - (char*)ptr += nread;
23 + ptr = vpadd(ptr, nread);
25 return (nbytes - nleft);
27 @@ -2292,7 +2292,7 @@ int writen(register int fd, register voi
28 return(nwritten); /* error */
31 - (char*)ptr += nwritten;
32 + ptr = vpadd(ptr,nwritten);
34 return(nbytes - nleft);
36 diff --git a/lib/ftlib.h b/lib/ftlib.h
37 index f91ad0a..66bf2f3 100644
40 @@ -152,7 +152,6 @@ #define FT_PDU_V8_11_MAXFLOWS 44 /* max
41 #define FT_PDU_V8_12_MAXFLOWS 44 /* max records in V8 DST_PREFIX_TOS packet */
42 #define FT_PDU_V8_13_MAXFLOWS 35 /* max records in V8 PREFIX_TOS packet */
43 #define FT_PDU_V8_14_MAXFLOWS 35 /* max records in V8 PREFIX_PORT_TOS packet */
45 #define FT_PDU_V8_1_VERSION 2 /* version of AS packet */
46 #define FT_PDU_V8_2_VERSION 2 /* version of PROTO PORT packet */
47 #define FT_PDU_V8_3_VERSION 2 /* version of SRC PREFIX packet */
48 @@ -3029,6 +3028,8 @@ #ifndef IN_CLASSD_SSM
49 #define IN_CLASSD_SSM(i) (((u_int32_t)(i) & 0xff000000) == 0xe8000000)
50 #endif /* IN_CLASSD_SSM */
52 +void *vpadd(const void* v, const int change);
54 /* MACHINE DEPENDANT */
55 #define fmt_uint fmt_uint32
57 diff --git a/lib/fttlv.c b/lib/fttlv.c
58 index 7035813..330a783 100644
61 @@ -68,10 +68,10 @@ int fttlv_enc_uint32(void *buf, int buf_
66 + buf = vpadd(buf, 2);
70 + buf = vpadd(buf, 2);
74 @@ -107,10 +107,10 @@ int fttlv_enc_uint16(void *buf, int buf_
79 + buf = vpadd(buf, 2);
83 + buf = vpadd(buf, 2);
87 @@ -145,10 +145,10 @@ int fttlv_enc_uint8(void *buf, int buf_s
92 + buf = vpadd(buf, 2);
96 + buf = vpadd(buf, 2);
100 @@ -183,10 +183,10 @@ int fttlv_enc_str(void *buf, int buf_siz
105 + buf = vpadd(buf, 2);
109 + buf = vpadd(buf, 2);
113 @@ -230,16 +230,16 @@ int fttlv_enc_ifname(void *buf, int buf_
118 + buf = vpadd(buf, 2);
122 + buf = vpadd(buf, 2);
126 + buf = vpadd(buf, 4);
128 bcopy(&ifIndex, buf, 2);
130 + buf = vpadd(buf, 2);
134 @@ -287,19 +287,19 @@ int fttlv_enc_ifalias(void *buf, int buf
139 + buf = vpadd(buf, 2);
143 + buf = vpadd(buf, 2);
147 + buf = vpadd(buf, 4);
149 bcopy(&entries, buf, 2);
151 + buf = vpadd(buf, 2);
153 bcopy(ifIndex_list, buf, esize);
154 - (char*)buf += esize;
155 + buf = vpadd(buf, esize);
159 diff --git a/lib/support.c b/lib/support.c
160 index a32ffe7..2e1db9f 100644
163 @@ -736,3 +736,8 @@ int udp_cksum(struct ip *ip, struct udph
169 +void * vpadd(const void *v, const int change) {
170 + return (void *) (((char*) v) + change);