s3:lib: factor out talloc_sub_advanced() from talloc_sub_full()
authorRalph Boehme <slow@samba.org>
Thu, 31 Oct 2019 10:57:39 +0000 (11:57 +0100)
committerAndreas Schneider <asn@cryptomilk.org>
Thu, 7 Nov 2019 14:16:42 +0000 (14:16 +0000)
BUG: https://bugzilla.samba.org/show_bug.cgi?id=13745

Signed-off-by: Ralph Boehme <slow@samba.org>
Reviewed-by: Andreas Schneider <asn@samba.org>
source3/include/proto.h
source3/lib/substitute.c

index e453669b433b44b1c234ad0064bcb77d982016a6..332a4132424d565a51ff48dc4b0a70e1db8a4936 100644 (file)
@@ -180,6 +180,10 @@ char *talloc_sub_specified(TALLOC_CTX *mem_ctx,
                        const char *domain,
                        uid_t uid,
                        gid_t gid);
+char *talloc_sub_advanced(TALLOC_CTX *mem_ctx,
+                         const char *servicename, const char *user,
+                         const char *connectpath, gid_t gid,
+                         const char *str);
 char *talloc_sub_full(TALLOC_CTX *mem_ctx,
                          const char *servicename, const char *user,
                          const char *connectpath, gid_t gid,
index e5cd0f28804dd73221e68b78a51c85dd83da449d..f3f2e1bc0e1482c12fde00c66c5b016410d9fe6a 100644 (file)
@@ -790,21 +790,19 @@ char *talloc_sub_specified(TALLOC_CTX *mem_ctx,
 /****************************************************************************
 ****************************************************************************/
 
-char *talloc_sub_full(TALLOC_CTX *ctx,
+char *talloc_sub_advanced(TALLOC_CTX *ctx,
                        const char *servicename,
                        const char *user,
                        const char *connectpath,
                        gid_t gid,
-                       const char *smb_name,
-                       const char *domain_name,
                        const char *str)
 {
-       char *a_string, *ret_string;
+       char *a_string;
        char *b, *p, *s;
 
        a_string = talloc_strdup(talloc_tos(), str);
        if (a_string == NULL) {
-               DBG_ERR("Out of memory!\n");
+               DEBUG(0, ("talloc_sub_advanced_only: Out of memory!\n"));
                return NULL;
        }
 
@@ -858,6 +856,26 @@ char *talloc_sub_full(TALLOC_CTX *ctx,
                }
        }
 
+       return a_string;
+}
+
+char *talloc_sub_full(TALLOC_CTX *ctx,
+                       const char *servicename,
+                       const char *user,
+                       const char *connectpath,
+                       gid_t gid,
+                       const char *smb_name,
+                       const char *domain_name,
+                       const char *str)
+{
+       char *a_string, *ret_string;
+
+       a_string = talloc_sub_advanced(ctx, servicename, user, connectpath,
+                                      gid, str);
+       if (a_string == NULL) {
+               return NULL;
+       }
+
        ret_string = talloc_sub_basic(ctx, smb_name, domain_name, a_string);
        TALLOC_FREE(a_string);
        return ret_string;