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;