diff options
author | James Peach <jpeach@samba.org> | 2006-02-28 00:59:14 +0000 |
---|---|---|
committer | Gerald (Jerry) Carter <jerry@samba.org> | 2007-10-10 11:10:51 -0500 |
commit | 51d3bbe2858c8ed1afd9b3fd46ae952fd22d48f0 (patch) | |
tree | 4b5ec690e2aae3dab7150e1ee1dd70eaaa246659 /source3/param | |
parent | 554155473b66cb184d1b4f0831d494766f4bc259 (diff) | |
download | samba-51d3bbe2858c8ed1afd9b3fd46ae952fd22d48f0.tar.gz samba-51d3bbe2858c8ed1afd9b3fd46ae952fd22d48f0.tar.bz2 samba-51d3bbe2858c8ed1afd9b3fd46ae952fd22d48f0.zip |
r13736: Don't assume that printf can handle string arguments being NULL. Tidy
up typing and tighten error checking a little.
(This used to be commit 37e12a196b1b1ee57b17a21226ba55d3aa6c69a5)
Diffstat (limited to 'source3/param')
-rw-r--r-- | source3/param/loadparm.c | 31 |
1 files changed, 17 insertions, 14 deletions
diff --git a/source3/param/loadparm.c b/source3/param/loadparm.c index 92719d9a3a..8c8afbfbe7 100644 --- a/source3/param/loadparm.c +++ b/source3/param/loadparm.c @@ -2152,14 +2152,17 @@ static param_opt_struct *get_parametrics(int snum, const char *type, const char } +#define MISSING_PARAMETER(name) \ + DEBUG(0, ("%s(): value is NULL or empty!\n", #name)) + /******************************************************************* convenience routine to return int parameters. ********************************************************************/ static int lp_int(const char *s) { - if (!s) { - DEBUG(0,("lp_int(%s): is called with NULL!\n",s)); + if (!s || !*s) { + MISSING_PARAMETER(lp_int); return (-1); } @@ -2169,12 +2172,12 @@ static int lp_int(const char *s) /******************************************************************* convenience routine to return unsigned long parameters. ********************************************************************/ -static int lp_ulong(const char *s) +static unsigned long lp_ulong(const char *s) { - if (!s) { - DEBUG(0,("lp_int(%s): is called with NULL!\n",s)); - return (-1); + if (!s || !*s) { + MISSING_PARAMETER(lp_ulong); + return (0); } return strtoul(s, NULL, 10); @@ -2187,8 +2190,8 @@ static BOOL lp_bool(const char *s) { BOOL ret = False; - if (!s) { - DEBUG(0,("lp_bool(%s): is called with NULL!\n",s)); + if (!s || !*s) { + MISSING_PARAMETER(lp_bool); return False; } @@ -2207,8 +2210,8 @@ static int lp_enum(const char *s,const struct enum_list *_enum) { int i; - if (!s || !_enum) { - DEBUG(0,("lp_enum(%s,enum): is called with NULL!\n",s)); + if (!s || !*s || !_enum) { + MISSING_PARAMETER(lp_enum); return (-1); } @@ -2221,6 +2224,7 @@ static int lp_enum(const char *s,const struct enum_list *_enum) return (-1); } +#undef MISSING_PARAMETER /* DO NOT USE lp_parm_string ANYMORE!!!! * use lp_parm_const_string or lp_parm_talloc_string @@ -3485,16 +3489,15 @@ BOOL lp_do_parameter(int snum, const char *pszParmName, const char *pszParmValue switch (parm_table[parmnum].type) { case P_BOOL: - set_boolean((BOOL *)parm_ptr, pszParmValue); + *(BOOL *)parm_ptr = lp_bool(pszParmValue); break; case P_BOOLREV: - set_boolean((BOOL *)parm_ptr, pszParmValue); - *(BOOL *)parm_ptr = !*(BOOL *)parm_ptr; + *(BOOL *)parm_ptr = !lp_bool(pszParmValue); break; case P_INTEGER: - *(int *)parm_ptr = atoi(pszParmValue); + *(int *)parm_ptr = lp_int(pszParmValue); break; case P_CHAR: |