]> git.ipfire.org Git - thirdparty/FORT-validator.git/commitdiff
Avoid some memory leaks
authorpcarana <pc.moreno2099@gmail.com>
Fri, 22 Mar 2019 23:27:00 +0000 (17:27 -0600)
committerpcarana <pc.moreno2099@gmail.com>
Fri, 22 Mar 2019 23:27:00 +0000 (17:27 -0600)
src/main.c
src/vrps.c

index 6d5d2f4e9075d009caa4f4365ee0d508a35ec1f9..7715cfb8e7323bbd2539eb61905200194476be28 100644 (file)
@@ -43,7 +43,7 @@ main(int argc, char *argv[])
 
        err = config_init(json_file);
        if (err)
-               return err;
+               goto end1;
 
        err = deltas_db_init();
        if (err)
index 8c8eb521d2f14e269a21ccb3ebdb61e857e1430c..d67972e38ee201b55871a9293bc8d4f5e1db6bf5 100644 (file)
@@ -39,6 +39,18 @@ delta_init(struct delta *delta)
        return vrps_init(&delta->vrps);
 }
 
+static void
+vrp_destroy(struct vrp *vrp)
+{
+       /* Didn't allocate something, so do nothing */
+}
+
+static void
+delta_destroy(struct delta *delta)
+{
+       vrps_cleanup(&delta->vrps, vrp_destroy);
+}
+
 int
 deltas_db_init(void)
 {
@@ -53,6 +65,7 @@ deltas_db_init(void)
        error = deltasdb_init(&state.deltas_db);
        if (error) {
                warnx("Deltas DB couldn't be initialized");
+               delta_destroy(&state.base_db);
                return error;
        }
 
@@ -193,6 +206,7 @@ delta_summary(struct delta *base_delta, struct delta *result)
                }
 
        memcpy(result, &summary_delta, sizeof(summary_delta));
+       delta_destroy(&summary_delta);
        return 0;
 }
 
@@ -219,6 +233,7 @@ deltas_db_add_delta(struct delta delta)
                return result;
        }
 
+       free(state.base_db.vrps.array);
        state.base_db = delta;
        state.current_serial++;
        return result;
@@ -260,23 +275,12 @@ deltas_db_create_delta(struct vrp *array, unsigned int len)
        return 0;
 }
 
-static void
-vrp_destroy(struct vrp *vrp)
-{
-       /* Didn't allocate something, so do nothing */
-}
-
-void
-delta_destroy(struct delta *delta)
-{
-       vrps_cleanup(&delta->vrps, vrp_destroy);
-}
-
 void
 deltas_db_destroy(void)
 {
+
+       delta_destroy(&state.base_db);
        deltasdb_cleanup(&state.deltas_db, delta_destroy);
-       vrps_cleanup(&state.base_db.vrps, vrp_destroy);
 }
 
 /*