diff --git a/lib/rmap.c b/lib/rmap.c
index 465494a30029b3406289b7653970da006f3936f8..f8b6eb0c4a38226bc4f5cd270332033b97e1eb6f 100644
--- a/lib/rmap.c
+++ b/lib/rmap.c
@@ -288,11 +288,13 @@ int rmap_set_reply_path(struct rmap_pkt *pkt, const uint8_t *rpath, uint8_t len)
 
 	pkt->rpath_len = len;
 
-	pkt->rpath = (uint8_t *) malloc(pkt->rpath_len);
-	if (!pkt->rpath)
-		return -1;
+	if (len) {
+		pkt->rpath = (uint8_t *) malloc(pkt->rpath_len);
+		if (!pkt->rpath)
+			return -1;
 
-	memcpy(pkt->rpath, rpath, pkt->rpath_len);
+		memcpy(pkt->rpath, rpath, pkt->rpath_len);
+	}
 
 	/* number of 32 bit words needed to contain the path */
 	pkt->ri.reply_addr_len = len >> 2;
@@ -326,6 +328,9 @@ int rmap_set_dest_path(struct rmap_pkt *pkt, const uint8_t *path, uint8_t len)
 
 	pkt->path_len = len;
 
+	if (!len)
+		return 0;
+
 	pkt->path = (uint8_t *) malloc(pkt->path_len);
 	if (!pkt->path)
 		return -1;