diff --git a/dns.c b/dns.c
index 2039528..cde74be 100644
--- a/dns.c
+++ b/dns.c
@@ -618,7 +618,9 @@ dnsd_read(int fd, char *buf, int buflen)
 
 				r = decodepacket(name, &packetbuf);
 
-				memcpy(buf, packetbuf.data, r);
+				if (r > 0) {
+					memcpy(buf, packetbuf.data, r);
+				}
 
 				return r;
 			}