]> git.meshlink.io Git - meshlink/blobdiff - src/conf.c
Fix a crash when meshlink_open() is called with an invalid confbase.
[meshlink] / src / conf.c
index ed51fc75f1391df10e3dfd6e207aff4e1ebd02d8..5231a9dfca25fc16c1a8fd3fbf63b9c0a8001081 100644 (file)
@@ -51,7 +51,8 @@ void init_configuration(splay_tree_t **config_tree) {
 }
 
 void exit_configuration(splay_tree_t **config_tree) {
-       splay_delete_tree(*config_tree);
+       if(*config_tree)
+               splay_delete_tree(*config_tree);
        *config_tree = NULL;
 }
 
@@ -290,7 +291,7 @@ bool read_config_file(splay_tree_t *config_tree, const char *fname) {
        return result;
 }
 
-bool read_server_config(void) {
+bool read_server_config(meshlink_handle_t *mesh) {
        char filename[PATH_MAX];
        bool x;
 
@@ -304,7 +305,7 @@ bool read_server_config(void) {
        return x;
 }
 
-bool read_host_config(splay_tree_t *config_tree, const char *name) {
+bool read_host_config(meshlink_handle_t *mesh, splay_tree_t *config_tree, const char *name) {
        char filename[PATH_MAX];
        bool x;
 
@@ -314,7 +315,7 @@ bool read_host_config(splay_tree_t *config_tree, const char *name) {
        return x;
 }
 
-bool append_config_file(const char *name, const char *key, const char *value) {
+bool append_config_file(meshlink_handle_t *mesh, const char *name, const char *key, const char *value) {
        char filename[PATH_MAX];
        snprintf(filename,PATH_MAX, "%s" SLASH "hosts" SLASH "%s", mesh->confbase, name);
 
@@ -323,10 +324,9 @@ bool append_config_file(const char *name, const char *key, const char *value) {
        if(!fp) {
                logger(DEBUG_ALWAYS, LOG_ERR, "Cannot open config file %s: %s", filename, strerror(errno));
        } else {
-               fprintf(fp, "\n# The following line was automatically added by tinc\n%s = %s\n", key, value);
+               fprintf(fp, "%s = %s\n", key, value);
                fclose(fp);
        }
 
-
        return fp != NULL;
 }