]> the.earth.li Git - onak.git/commitdiff
Improve memory clean-up on exit
authorJonathan McDowell <noodles@earth.li>
Tue, 7 Jun 2016 10:37:37 +0000 (11:37 +0100)
committerJonathan McDowell <noodles@earth.li>
Tue, 7 Jun 2016 10:56:50 +0000 (11:56 +0100)
onak + wotsap were failing to free the memory allocated for the config
file name if it was passed on the command line, and the config structure
cleanups failed to free any configured sock_dir or the actual DB
backend config structure. All of this gets cleaned up by normal program
exit (which is when we do our clean-up anyway), but fix it anyway.

onak-conf.c
onak.c
wotsap.c

index 9f75123ff37aaa82f9d2b847acff664bed86cd7d..038ad55a254d96f7d8ddfb5fea35336c28e3ff12 100644 (file)
@@ -45,7 +45,7 @@ struct onak_config config = {
        .logfile = NULL,
 
        .use_keyd = false,
-       .sock_dir = ".",
+       .sock_dir = NULL,
 
        .backends = NULL,
        .backends_dir = NULL,
@@ -266,6 +266,8 @@ void cleanupdbconfig(void *object)
                free(dbconfig->password);
                dbconfig->password = NULL;
        }
+
+       free(dbconfig);
 }
 
 void cleanupconfig(void) {
@@ -301,6 +303,10 @@ void cleanupconfig(void) {
                free(config.backends_dir);
                config.backends_dir = NULL;
        }
+       if (config.sock_dir != NULL) {
+               free(config.sock_dir);
+               config.sock_dir = NULL;
+       }
        if (config.bin_dir != NULL) {
                free(config.bin_dir);
                config.bin_dir = NULL;
diff --git a/onak.c b/onak.c
index 08bdd39e425275c0b980363f51403750519227ab..ef7134162a649d4861dbf9201043ec9d28941f20 100644 (file)
--- a/onak.c
+++ b/onak.c
@@ -444,6 +444,7 @@ int main(int argc, char *argv[])
 
        cleanuplogthing();
        cleanupconfig();
+       free(configfile);
 
        return rc;
 }
index ce25b02e8b4f4224c478c0239524f0b7ab95f875..ca66f8562b41530c0f3f78e8962fab69adf5e021 100644 (file)
--- a/wotsap.c
+++ b/wotsap.c
@@ -215,4 +215,5 @@ int main(int argc, char *argv[])
        }
        cleanuplogthing();
        cleanupconfig();
+       free(configfile);
 }