From: pcarana Date: Tue, 19 Mar 2019 16:07:04 +0000 (-0600) Subject: Assign correctly the VRPs when sending a serial notify X-Git-Tag: v0.0.2~52^2~25 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=e3f62a41d81b8114ad260bd3af2e76cf86e1aa5e;p=thirdparty%2FFORT-validator.git Assign correctly the VRPs when sending a serial notify --- diff --git a/src/rtr/pdu_sender.c b/src/rtr/pdu_sender.c index ad173c1b..2c1c4137 100644 --- a/src/rtr/pdu_sender.c +++ b/src/rtr/pdu_sender.c @@ -203,9 +203,9 @@ send_payload_pdus(struct sender_common *common) int error; vrps = malloc(sizeof(struct vrp)); - len = get_vrps_delta(common->start_serial, common->end_serial, vrps); + len = get_vrps_delta(common->start_serial, common->end_serial, &vrps); if (len == 0) - return 0; + goto end; for (i = 0; i < len; i++) { if (vrps[i].in_addr_len == INET_ADDRSTRLEN) @@ -220,7 +220,7 @@ send_payload_pdus(struct sender_common *common) return error; } } - +end: free(vrps); return 0; } diff --git a/src/vrps.c b/src/vrps.c index c79d6bce..9d914aeb 100644 --- a/src/vrps.c +++ b/src/vrps.c @@ -291,16 +291,16 @@ add_vrps_filtered(struct vrps *dst, struct vrps *src) } static void -copy_vrps(struct vrp *dst, struct vrp *src, unsigned int len) +copy_vrps(struct vrp **dst, struct vrp *src, unsigned int len) { struct vrp *tmp; - tmp = realloc(dst, len * sizeof(struct vrp)); + tmp = realloc(*dst, len * sizeof(struct vrp)); if (tmp == NULL) { err(-ENOMEM, "Couldn't copy VRPs"); return; } - dst = tmp; - memcpy(dst, src, len * sizeof(struct vrp)); + *dst = tmp; + *dst = memcpy(*dst, src, len * sizeof(struct vrp)); } /* @@ -312,7 +312,7 @@ copy_vrps(struct vrp *dst, struct vrp *src, unsigned int len) */ unsigned int get_vrps_delta(u_int32_t *start_serial, u_int32_t *end_serial, - struct vrp *result) + struct vrp **result) { struct delta **delta1; struct vrps summary; diff --git a/src/vrps.h b/src/vrps.h index 6546061b..1fa68fb0 100644 --- a/src/vrps.h +++ b/src/vrps.h @@ -33,7 +33,7 @@ int delta_add_vrp(struct delta *, struct vrp *); int deltas_db_add_delta(struct delta *); int deltas_db_status(u_int32_t *); -unsigned int get_vrps_delta(u_int32_t *, u_int32_t *, struct vrp *); +unsigned int get_vrps_delta(u_int32_t *, u_int32_t *, struct vrp **); void vrp_destroy(struct vrp *); void delta_destroy(struct delta **);