From 51d3bbe2858c8ed1afd9b3fd46ae952fd22d48f0 Mon Sep 17 00:00:00 2001 From: James Peach Date: Tue, 28 Feb 2006 00:59:14 +0000 Subject: [PATCH] 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) --- source3/param/loadparm.c | 31 +++++++++++++++++-------------- 1 file changed, 17 insertions(+), 14 deletions(-) diff --git a/source3/param/loadparm.c b/source3/param/loadparm.c index 92719d9a3a0..8c8afbfbe72 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: