From 8de11f06df03e19fe92f44da10a10eab30e118b2 Mon Sep 17 00:00:00 2001 From: Derrell Lipman Date: Thu, 31 Mar 2005 20:28:47 +0000 Subject: r6155: Fixes bug #1133 Added provision for overloading some global configuration options via the new, per-user file ~/.smb/smb.conf.append which is read after the global config file is read (and only if the global config file was read). This leave the original, BC behavior of ~/.smb/smb.conf which, if found, is read but causes the global config file to not be read. Also fixed a potential seg fault in to lp_dump_one(). (This used to be commit 2c5a6305bd127b1a7e65356c2b3aa5c13cd2bd74) --- source3/libsmb/libsmbclient.c | 23 +++++++++++++++++++---- source3/param/loadparm.c | 2 +- 2 files changed, 20 insertions(+), 5 deletions(-) diff --git a/source3/libsmb/libsmbclient.c b/source3/libsmb/libsmbclient.c index ae9a660a09..657d0925b0 100644 --- a/source3/libsmb/libsmbclient.c +++ b/source3/libsmb/libsmbclient.c @@ -5169,10 +5169,25 @@ SMBCCTX * smbc_init_context(SMBCCTX * context) * defaults ... */ - if (!lp_load(dyn_CONFIGFILE, True, False, False)) { - DEBUG(5, ("Could not load either config file: %s or %s\n", - conf, dyn_CONFIGFILE)); - } + if (!lp_load(dyn_CONFIGFILE, True, False, False)) { + DEBUG(5, ("Could not load either config file: " + "%s or %s\n", + conf, dyn_CONFIGFILE)); + } else { + /* + * We loaded the global config file. Now lets + * load user-specific modifications to the + * global config. + */ + slprintf(conf, sizeof(conf), + "%s/.smb/smb.conf.append", home); + if (!lp_load(conf, True, False, False)) { + DEBUG(10, + ("Could not append config file: " + "%s\n", + conf)); + } + } } reopen_logs(); /* Get logging working ... */ diff --git a/source3/param/loadparm.c b/source3/param/loadparm.c index f28b0c49ae..8ec7efddcd 100644 --- a/source3/param/loadparm.c +++ b/source3/param/loadparm.c @@ -73,7 +73,7 @@ extern pstring user_socket_options; /* some helpful bits */ #define LP_SNUM_OK(i) (((i) >= 0) && ((i) < iNumServices) && ServicePtrs[(i)]->valid) -#define VALID(i) ServicePtrs[i]->valid +#define VALID(i) (ServicePtrs != NULL && ServicePtrs[i]->valid) int keepalive = DEFAULT_KEEPALIVE; BOOL use_getwd_cache = True; -- cgit