From 6ee26a3ae3293aaeb4507d5d0b16ad31173cc39a Mon Sep 17 00:00:00 2001 From: Daniel-Constantin Mierla Date: Sun, 3 Mar 2024 20:57:45 +0100 Subject: [PATCH] core: parser rr - check for rr value before serializing --- src/core/parser/parse_rr.c | 24 ++++++++++++++++-------- 1 file changed, 16 insertions(+), 8 deletions(-) diff --git a/src/core/parser/parse_rr.c b/src/core/parser/parse_rr.c index f6fce793faf..362f30b15ed 100644 --- a/src/core/parser/parse_rr.c +++ b/src/core/parser/parse_rr.c @@ -444,20 +444,28 @@ int print_rr_body( i = (nb_recs == NULL) ? 0 : *nb_recs; while(i < n) { - memcpy(cp, route[i].s, route[i].len); - cp += route[i].len; - if(++i < n) - *(cp++) = ','; + if(route[i].s != NULL) { + memcpy(cp, route[i].s, route[i].len); + cp += route[i].len; + if(++i < n) + *(cp++) = ','; + } else { + i++; + } } } else { i = (nb_recs == NULL) ? n - 1 : (n - *nb_recs - 1); while(i >= 0) { - memcpy(cp, route[i].s, route[i].len); - cp += route[i].len; - if(i-- > 0) - *(cp++) = ','; + if(route[i].s != NULL) { + memcpy(cp, route[i].s, route[i].len); + cp += route[i].len; + if(i-- > 0) + *(cp++) = ','; + } else { + i--; + } } } oroute->len = cp - start;