From: pcarana Date: Tue, 19 Feb 2019 14:18:37 +0000 (-0600) Subject: Fix segfault when destroying vrps X-Git-Tag: v0.0.2~52^2~66 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=db5637850095afd9f763c267efcc52e03cde0551;p=thirdparty%2FFORT-validator.git Fix segfault when destroying vrps --- diff --git a/src/csv.c b/src/csv.c index b9275f88..77faa3b1 100644 --- a/src/csv.c +++ b/src/csv.c @@ -165,7 +165,7 @@ add_vrp(char *line, struct delta *delta) error = delta_add_vrp(delta, vrp); if (error) { - vrp_destroy(vrp); + vrp_destroy(&vrp); goto error; } diff --git a/src/vrps.c b/src/vrps.c index 41f1c78a..e181db58 100644 --- a/src/vrps.c +++ b/src/vrps.c @@ -14,7 +14,7 @@ struct vrp { u_int8_t max_prefix_length; }; -ARRAY_LIST(delta, struct vrp) +ARRAY_LIST(delta, struct vrp *) ARRAY_LIST(deltasdb, struct delta) struct deltasdb db; @@ -106,13 +106,13 @@ deltas_db_add_delta(struct delta *delta) int delta_add_vrp(struct delta *delta, struct vrp *vrp) { - return delta_add(delta, vrp); + return delta_add(delta, &vrp); } void -vrp_destroy(struct vrp *vrp) +vrp_destroy(struct vrp **vrp) { - free(vrp); + free(*vrp); } void diff --git a/src/vrps.h b/src/vrps.h index 41aabad4..70c5abf9 100644 --- a/src/vrps.h +++ b/src/vrps.h @@ -15,7 +15,7 @@ struct vrp *create_vrp6(u_int32_t, struct in6_addr, u_int8_t, u_int8_t); int delta_add_vrp(struct delta *, struct vrp *); int deltas_db_add_delta(struct delta *); -void vrp_destroy(struct vrp *); +void vrp_destroy(struct vrp **); void delta_destroy(struct delta *); void deltas_db_destroy();