diff options
author | Volker Lendecke <vl@samba.org> | 2007-12-19 15:02:59 +0100 |
---|---|---|
committer | Volker Lendecke <vl@samba.org> | 2007-12-19 21:09:10 +0100 |
commit | e518e19bc0000019f131354f55e9f5b55f6a2c5e (patch) | |
tree | 5c8723a1510ebb17ff4bd21068aa67159ad3a68d /source3/lib/substitute.c | |
parent | 042201bcc1b7ffc88cdc22b64c70c653b2433703 (diff) | |
download | samba-e518e19bc0000019f131354f55e9f5b55f6a2c5e.tar.gz samba-e518e19bc0000019f131354f55e9f5b55f6a2c5e.tar.xz samba-e518e19bc0000019f131354f55e9f5b55f6a2c5e.zip |
Remove Get_Pwnam and its associated static variable
All callers are replaced by Get_Pwnam_alloc
(This used to be commit 735f59315497113aebadcf9ad387e3dbfffa284a)
Diffstat (limited to 'source3/lib/substitute.c')
-rw-r--r-- | source3/lib/substitute.c | 26 |
1 files changed, 17 insertions, 9 deletions
diff --git a/source3/lib/substitute.c b/source3/lib/substitute.c index e06917c8fbe..80feee95790 100644 --- a/source3/lib/substitute.c +++ b/source3/lib/substitute.c @@ -408,7 +408,7 @@ static const char *automount_path(const char *user_name) /* use the passwd entry as the default */ /* this will be the default if WITH_AUTOMOUNT is not used or fails */ - server_path = talloc_strdup(ctx, get_user_home_dir(user_name)); + server_path = talloc_strdup(ctx, get_user_home_dir(ctx, user_name)); if (!server_path) { return ""; } @@ -541,7 +541,6 @@ char *alloc_sub_basic(const char *smb_name, const char *domain_name, { char *b, *p, *s, *r, *a_string; fstring pidstr, vnnstr; - struct passwd *pass; char addr[INET6_ADDRSTRLEN]; const char *local_machine_name = get_local_machine_name(); @@ -571,15 +570,21 @@ char *alloc_sub_basic(const char *smb_name, const char *domain_name, } a_string = realloc_string_sub(a_string, "%U", r); break; - case 'G' : + case 'G' : { + struct passwd *pass; r = SMB_STRDUP(smb_name); if (r == NULL) { goto error; } - if ((pass = Get_Pwnam(r))!=NULL) { - a_string = realloc_string_sub(a_string, "%G", gidtoname(pass->pw_gid)); - } + pass = Get_Pwnam_alloc(talloc_tos(), r); + if (pass != NULL) { + a_string = realloc_string_sub( + a_string, "%G", + gidtoname(pass->pw_gid)); + } + TALLOC_FREE(pass); break; + } case 'D' : r = strdup_upper(domain_name); if (r == NULL) { @@ -766,7 +771,7 @@ static char *alloc_sub_advanced(const char *servicename, const char *user, const char *str) { char *a_string, *ret_string; - char *b, *p, *s, *h; + char *b, *p, *s; a_string = SMB_STRDUP(str); if (a_string == NULL) { @@ -782,10 +787,13 @@ static char *alloc_sub_advanced(const char *servicename, const char *user, case 'N' : a_string = realloc_string_sub(a_string, "%N", automount_server(user)); break; - case 'H': - if ((h = get_user_home_dir(user))) + case 'H': { + char *h; + if ((h = get_user_home_dir(talloc_tos(), user))) a_string = realloc_string_sub(a_string, "%H", h); + TALLOC_FREE(h); break; + } case 'P': a_string = realloc_string_sub(a_string, "%P", connectpath); break; |