Forward port of Richard Sharpe's <realrichardsharpe@gmail.com> fix for bug #8970...
authorJeremy Allison <jra@samba.org>
Thu, 31 May 2012 22:06:58 +0000 (15:06 -0700)
committerJeremy Allison <jra@samba.org>
Thu, 31 May 2012 23:08:44 +0000 (16:08 -0700)
source3/nmbd/nmbd.c
source3/param/loadparm.c
source3/printing/load.c
source3/smbd/server_reload.c
source3/winbindd/winbindd.c

index 98a5310..d464e7e 100644 (file)
@@ -382,11 +382,12 @@ static bool reload_nmbd_services(bool test)
        set_remote_machine_name("nmbd", False);
 
        if ( lp_loaded() ) {
-               const char *fname = lp_configfile();
+               char *fname = lp_configfile();
                if (file_exist(fname) && !strcsequal(fname,get_dyn_CONFIGFILE())) {
                        set_dyn_CONFIGFILE(fname);
                        test = False;
                }
+               TALLOC_FREE(fname);
        }
 
        if ( test && !lp_file_list_changed() )
index 11ff646..1c78b58 100644 (file)
@@ -8809,7 +8809,11 @@ static bool lp_load_ex(const char *pszFname,
                }
        }
 
-       lp_add_auto_services(lp_auto_services());
+       {
+               char *serv = lp_auto_services();
+               lp_add_auto_services(serv);
+               TALLOC_FREE(serv);
+       }
 
        if (add_ipc) {
                /* When 'restrict anonymous = 2' guest connections to ipc$
index 161d711..af4dcc7 100644 (file)
@@ -31,6 +31,7 @@ static void add_auto_printers(void)
        int pnum = lp_servicenumber(PRINTERS_NAME);
        char *str;
        char *saveptr;
+       char *auto_serv = NULL;
 
        if (pnum < 0)
                if (process_registry_service(PRINTERS_NAME))
@@ -39,8 +40,12 @@ static void add_auto_printers(void)
        if (pnum < 0)
                return;
 
-       if ((str = SMB_STRDUP(lp_auto_services())) == NULL)
+       auto_serv = lp_auto_services();
+       str = SMB_STRDUP(auto_serv);
+       TALLOC_FREE(auto_serv);
+       if (str == NULL) {
                return;
+       }
 
        for (p = strtok_r(str, LIST_SEP, &saveptr); p;
             p = strtok_r(NULL, LIST_SEP, &saveptr)) {
index 8ca5bee..bab622d 100644 (file)
@@ -146,6 +146,7 @@ bool reload_services(struct smbd_server_connection *sconn,
                        set_dyn_CONFIGFILE(fname);
                        test = False;
                }
+               TALLOC_FREE(fname);
        }
 
        reopen_logs();
index 22056e2..248f747 100644 (file)
@@ -65,11 +65,12 @@ static bool reload_services_file(const char *lfile)
        bool ret;
 
        if (lp_loaded()) {
-               const char *fname = lp_configfile();
+               char *fname = lp_configfile();
 
                if (file_exist(fname) && !strcsequal(fname,get_dyn_CONFIGFILE())) {
                        set_dyn_CONFIGFILE(fname);
                }
+               TALLOC_FREE(fname);
        }
 
        /* if this is a child, restore the logfile to the special