瀏覽代碼

core: parser rr - check for rr value before serializing

Daniel-Constantin Mierla 1 年之前
父節點
當前提交
6ee26a3ae3
共有 1 個文件被更改,包括 16 次插入8 次删除
  1. 16 8
      src/core/parser/parse_rr.c

+ 16 - 8
src/core/parser/parse_rr.c

@@ -444,20 +444,28 @@ int print_rr_body(
 		i = (nb_recs == NULL) ? 0 : *nb_recs;
 		i = (nb_recs == NULL) ? 0 : *nb_recs;
 
 
 		while(i < n) {
 		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 {
 	} else {
 
 
 		i = (nb_recs == NULL) ? n - 1 : (n - *nb_recs - 1);
 		i = (nb_recs == NULL) ? n - 1 : (n - *nb_recs - 1);
 
 
 		while(i >= 0) {
 		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;
 	oroute->len = cp - start;