Add wrapper str_list_make_v3() to replace the old S3 behavior of
authorJeremy Allison <jra@samba.org>
Fri, 7 Nov 2008 02:53:00 +0000 (18:53 -0800)
committerJeremy Allison <jra@samba.org>
Fri, 7 Nov 2008 02:53:00 +0000 (18:53 -0800)
str_list_make(). From Dan Sledz <dan.sledz@isilon.com>:
In samba 3.2 passing NULL or an empty string returned NULL.
In master, it now returns a list of length 1 with the first string set
to NULL (an empty list).
Jeremy.

source3/auth/auth.c
source3/include/proto.h
source3/lib/debug.c
source3/lib/util_str.c
source3/libgpo/gpo_ldap.c
source3/param/loadparm.c
source3/smbd/map_username.c
source3/smbd/password.c
source3/web/neg_lang.c

index 7f95656befd7d8abcdaa453456374b3317a4d386..505098c76ac26b93d390d72a24f46b6ee6a60f71 100644 (file)
@@ -469,13 +469,13 @@ NTSTATUS make_auth_context_subsystem(struct auth_context **auth_context)
                {
                case SEC_DOMAIN:
                        DEBUG(5,("Making default auth method list for security=domain\n"));
-                       auth_method_list = str_list_make(
+                       auth_method_list = str_list_make_v3(
                                talloc_tos(), "guest sam winbind:ntdomain",
                                NULL);
                        break;
                case SEC_SERVER:
                        DEBUG(5,("Making default auth method list for security=server\n"));
-                       auth_method_list = str_list_make(
+                       auth_method_list = str_list_make_v3(
                                talloc_tos(), "guest sam smbserver",
                                NULL);
                        break;
@@ -483,36 +483,36 @@ NTSTATUS make_auth_context_subsystem(struct auth_context **auth_context)
                        if (lp_encrypted_passwords()) { 
                                if ((lp_server_role() == ROLE_DOMAIN_PDC) || (lp_server_role() == ROLE_DOMAIN_BDC)) {
                                        DEBUG(5,("Making default auth method list for DC, security=user, encrypt passwords = yes\n"));
-                                       auth_method_list = str_list_make(
+                                       auth_method_list = str_list_make_v3(
                                                talloc_tos(),
                                                "guest sam winbind:trustdomain",
                                                NULL);
                                } else {
                                        DEBUG(5,("Making default auth method list for standalone security=user, encrypt passwords = yes\n"));
-                                       auth_method_list = str_list_make(
+                                       auth_method_list = str_list_make_v3(
                                                talloc_tos(), "guest sam",
                                                NULL);
                                }
                        } else {
                                DEBUG(5,("Making default auth method list for security=user, encrypt passwords = no\n"));
-                               auth_method_list = str_list_make(
+                               auth_method_list = str_list_make_v3(
                                        talloc_tos(), "guest unix", NULL);
                        }
                        break;
                case SEC_SHARE:
                        if (lp_encrypted_passwords()) {
                                DEBUG(5,("Making default auth method list for security=share, encrypt passwords = yes\n"));
-                               auth_method_list = str_list_make(
+                               auth_method_list = str_list_make_v3(
                                        talloc_tos(), "guest sam", NULL);
                        } else {
                                DEBUG(5,("Making default auth method list for security=share, encrypt passwords = no\n"));
-                               auth_method_list = str_list_make(
+                               auth_method_list = str_list_make_v3(
                                        talloc_tos(), "guest unix", NULL);
                        }
                        break;
                case SEC_ADS:
                        DEBUG(5,("Making default auth method list for security=ADS\n"));
-                       auth_method_list = str_list_make(
+                       auth_method_list = str_list_make_v3(
                                talloc_tos(), "guest sam winbind:ntdomain",
                                NULL);
                        break;
index 49c9aff349c58a8d51dafd18fb284abffb490cdd..482027e8dcd5f3f2321379ca47b96801e09b4c03 100644 (file)
@@ -1582,6 +1582,7 @@ bool validate_net_name( const char *name,
                const char *invalid_chars,
                int max_len);
 char *escape_shell_string(const char *src);
+char **str_list_make_v3(TALLOC_CTX *mem_ctx, const char *string, const char *sep);
 
 /* The following definitions come from lib/util_unistr.c  */
 
index 986dff48d7d2ca31b004fcce8caa125a23cd6be5..d64fcb66d989d56d05d56fa34fabf0466687b0e2 100644 (file)
@@ -472,7 +472,7 @@ bool debug_parse_levels(const char *params_str)
        if (AllowDebugChange == False)
                return True;
 
-       params = str_list_make(talloc_tos(), params_str, NULL);
+       params = str_list_make_v3(talloc_tos(), params_str, NULL);
 
        if (debug_parse_params(params)) {
                debug_dump_status(5);
index 046ce61ea31a83a7cd32da061371e55fcceaa0e1..fde4f825e81416b45ade0b5f08ff7b5eef19f7cf 100644 (file)
@@ -2532,3 +2532,19 @@ char *escape_shell_string(const char *src)
        *dest++ = '\0';
        return ret;
 }
+
+/***************************************************
+ Wrapper for str_list_make() to restore the s3 behavior.
+ In samba 3.2 passing NULL or an empty string returned NULL.
+
+ In master, it now returns a list of length 1 with the first string set
+ to NULL (an empty list)
+***************************************************/
+
+char **str_list_make_v3(TALLOC_CTX *mem_ctx, const char *string, const char *sep)
+{
+       if (!string || !*string) {
+               return NULL;
+       }
+       return str_list_make(mem_ctx, string, sep);
+}
index 0e77f0a8566ffba6b14355b079ab55b4eda1c43c..26813864e5601d2b8b3c480536296217d48a5b73 100644 (file)
@@ -44,7 +44,7 @@ bool ads_parse_gp_ext(TALLOC_CTX *mem_ctx,
                goto parse_error;
        }
 
-       ext_list = str_list_make(mem_ctx, extension_raw, "]");
+       ext_list = str_list_make_v3(mem_ctx, extension_raw, "]");
        if (!ext_list) {
                goto parse_error;
        }
@@ -87,7 +87,7 @@ bool ads_parse_gp_ext(TALLOC_CTX *mem_ctx,
                        p++;
                }
 
-               ext_strings = str_list_make(mem_ctx, p, "}");
+               ext_strings = str_list_make_v3(mem_ctx, p, "}");
                if (ext_strings == NULL) {
                        goto parse_error;
                }
@@ -162,7 +162,7 @@ static ADS_STATUS gpo_parse_gplink(TALLOC_CTX *mem_ctx,
 
        DEBUG(10,("gpo_parse_gplink: gPLink: %s\n", gp_link_raw));
 
-       link_list = str_list_make(mem_ctx, gp_link_raw, "]");
+       link_list = str_list_make_v3(mem_ctx, gp_link_raw, "]");
        if (!link_list) {
                goto parse_error;
        }
index 84f6fb907ae9ce74c459d270c1d9af8af7ddacc0..fae6cb38dcebaa564182dc797ffd2fa7d5a25766 100644 (file)
@@ -4899,7 +4899,7 @@ static void init_globals(bool first_time_only)
        Globals.bWinbindTrustedDomainsOnly = False;
        Globals.bWinbindNestedGroups = True;
        Globals.winbind_expand_groups = 1;
-       Globals.szWinbindNssInfo = str_list_make(NULL, "template", NULL);
+       Globals.szWinbindNssInfo = str_list_make_v3(NULL, "template", NULL);
        Globals.bWinbindRefreshTickets = False;
        Globals.bWinbindOfflineLogon = False;
 
@@ -5615,7 +5615,7 @@ const char **lp_parm_string_list(int snum, const char *type, const char *option,
                return (const char **)def;
                
        if (data->list==NULL) {
-               data->list = str_list_make(NULL, data->value, NULL);
+               data->list = str_list_make_v3(NULL, data->value, NULL);
        }
 
        return (const char **)data->list;
@@ -6859,7 +6859,7 @@ static bool handle_netbios_scope(int snum, const char *pszParmValue, char **ptr)
 static bool handle_netbios_aliases(int snum, const char *pszParmValue, char **ptr)
 {
        TALLOC_FREE(Globals.szNetbiosAliases);
-       Globals.szNetbiosAliases = str_list_make(NULL, pszParmValue, NULL);
+       Globals.szNetbiosAliases = str_list_make_v3(NULL, pszParmValue, NULL);
        return set_netbios_aliases((const char **)Globals.szNetbiosAliases);
 }
 
@@ -7261,7 +7261,7 @@ bool lp_do_parameter(int snum, const char *pszParmName, const char *pszParmValue
 
                case P_LIST:
                        TALLOC_FREE(*((char ***)parm_ptr));
-                       *(char ***)parm_ptr = str_list_make(
+                       *(char ***)parm_ptr = str_list_make_v3(
                                NULL, pszParmValue, NULL);
                        break;
 
index a8899dd538af118bf45c7b9aeb02d1daaccce91e..f549f0c9f301dcbecfc98bf7989928092785add6 100644 (file)
@@ -178,7 +178,7 @@ bool map_username(fstring user)
 
                /* skip lines like 'user = ' */
 
-               dosuserlist = str_list_make(talloc_tos(), dosname, NULL);
+               dosuserlist = str_list_make_v3(talloc_tos(), dosname, NULL);
                if (!dosuserlist) {
                        DEBUG(0,("Bad username map entry.  Unable to build user list.  Ignoring.\n"));
                        continue;
index 88e7b766beda625b4d22a1bfb5771ad6a2d39810..84b40f28cc61738ae90b6bd7abce4c9cd5fbcae0 100644 (file)
@@ -576,7 +576,7 @@ static bool user_ok(const char *user, int snum)
        TALLOC_FREE(valid);
 
        if (ret && lp_onlyuser(snum)) {
-               char **user_list = str_list_make(
+               char **user_list = str_list_make_v3(
                        talloc_tos(), lp_username(snum), NULL);
                if (user_list &&
                    str_list_substitute(user_list, "%S",
index 82411000cd1e8d806e8d98cb2b634d6a19ed2f2d..491ca9eedd0dabcc09ca1e19562c7bd7de905e82 100644 (file)
@@ -74,7 +74,7 @@ void web_set_lang(const char *lang_string)
        int lang_num, i;
 
        /* build the lang list */
-       lang_list = str_list_make(talloc_tos(), lang_string, ", \t\r\n");
+       lang_list = str_list_make_v3(talloc_tos(), lang_string, ", \t\r\n");
        if (!lang_list) return;
        
        /* sort the list by priority */