From b93577fbc044e630e9f91deed84daacce02dad12 Mon Sep 17 00:00:00 2001 From: Erik Ekman Date: Thu, 8 Jun 2006 18:50:40 +0000 Subject: [PATCH] Fixed READSHORT/LONG to avoid bus error on sparc --- dns.c | 6 ++++-- dnsd.c | 6 ++++-- 2 files changed, 8 insertions(+), 4 deletions(-) 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);