diff --git a/dns.c b/dns.c index 3ee3260..efb041e 100644 --- a/dns.c +++ b/dns.c @@ -83,10 +83,12 @@ readname(char *packet, char *dst, char *src) #define READNAME(packet, dst, src) (src) += readname((packet), (dst), (src)); #define READSHORT(dst, src) \ - (dst) = ntohs(*(short*)(src)); (src)+=2; + memcpy(&dst, src, 2); \ + (dst) = ntohs(dst); (src)+=2; #define READLONG(dst, src) \ - (dst) = ntohl(*(long*)(src)); (src)+=4; + memcpy(&dst, src, 2); \ + (dst) = ntohl(dst); (src)+=4; #define READDATA(dst, src, len) \ memcpy((dst), (src), (len)); (src)+=(len); diff --git a/dnsd.c b/dnsd.c index 491c042..32f13fe 100644 --- a/dnsd.c +++ b/dnsd.c @@ -89,10 +89,12 @@ readname(char *packet, char *dst, char *src) #define READNAME(packet, dst, src) (src) += readname((packet), (dst), (src)); #define READSHORT(dst, src) \ - (dst) = ntohs(*(short*)(src)); (src)+=2; + memcpy(&dst, src, 2); \ + (dst) = ntohs(dst); (src)+=2; #define READLONG(dst, src) \ - (dst) = ntohl(*(long*)(src)); (src)+=4; + memcpy(&dst, src, 2); \ + (dst) = ntohl(dst); (src)+=4; #define READDATA(dst, src, len) \ memcpy((dst), (src), (len)); (src)+=(len);