]> git.ipfire.org Git - thirdparty/FORT-validator.git/commitdiff
Assign correctly the VRPs when sending a serial notify
authorpcarana <pc.moreno2099@gmail.com>
Tue, 19 Mar 2019 16:07:04 +0000 (10:07 -0600)
committerpcarana <pc.moreno2099@gmail.com>
Tue, 19 Mar 2019 16:07:04 +0000 (10:07 -0600)
src/rtr/pdu_sender.c
src/vrps.c
src/vrps.h

index ad173c1b36392cedf5709f033257b7a3779c2562..2c1c41373e7643dc0827bb7d07ae689d864dd85b 100644 (file)
@@ -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;
 }
index c79d6bceaaa2f27954e0ea77e44a65d9dfc91f5f..9d914aeb06470231be41271e91cbfef2d809d86f 100644 (file)
@@ -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;
index 6546061b9e608bca50c6c8aa563fc37c5cc4e0e7..1fa68fb08a461e73dd3d6b7fb41b06b884fab5c8 100644 (file)
@@ -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 **);