]> git.ipfire.org Git - ipfire-2.x.git/blobdiff - src/patches/samba/samba-3.6.99-fix_group_expansion_in_service_path.patch
samba: add current RHEL6 patches
[ipfire-2.x.git] / src / patches / samba / samba-3.6.99-fix_group_expansion_in_service_path.patch
diff --git a/src/patches/samba/samba-3.6.99-fix_group_expansion_in_service_path.patch b/src/patches/samba/samba-3.6.99-fix_group_expansion_in_service_path.patch
new file mode 100644 (file)
index 0000000..28661d7
--- /dev/null
@@ -0,0 +1,46 @@
+commit 1d5f14acc3bacb96f7b8b300b3aeccd793552122
+Author:     Andreas Schneider <asn@samba.org>
+AuthorDate: Wed Nov 27 17:21:01 2013 +0100
+Commit:     Andreas Schneider <asn@samba.org>
+CommitDate: Wed Feb 5 11:44:51 2014 +0100
+
+    s3-lib: Fix %G substitution for domain users in smbd
+    
+    BUG: https://bugzilla.samba.org/show_bug.cgi?id=10286
+    Signed-off-by: Andreas Schneider <asn@samba.org>
+    Reviewed-by: Christian Ambach <ambi@samba.org>
+    
+    Autobuild-User(master): Christian Ambach <ambi@samba.org>
+    Autobuild-Date(master): Tue Dec 10 16:39:43 CET 2013 on sn-devel-104
+    
+    (cherry picked from commit 8eef4ab79ec5fb7e96ad2f2ad6c9bf30db13a50d)
+---
+ source3/lib/substitute.c | 12 +++++++++++-
+ 1 file changed, 11 insertions(+), 1 deletion(-)
+
+diff --git a/source3/lib/substitute.c b/source3/lib/substitute.c
+index 10beed7..5f72a5d 100644
+--- a/source3/lib/substitute.c
++++ b/source3/lib/substitute.c
+@@ -605,10 +605,20 @@ static char *alloc_sub_basic(const char *smb_name, const char *domain_name,
+                       break;
+               case 'G' : {
+                       struct passwd *pass;
+-                      r = talloc_strdup(tmp_ctx, smb_name);
++
++                      if (domain_name != NULL && domain_name[0] != '\0') {
++                              r = talloc_asprintf(tmp_ctx,
++                                                  "%s%c%s",
++                                                  domain_name,
++                                                  *lp_winbind_separator(),
++                                                  smb_name);
++                      } else {
++                              r = talloc_strdup(tmp_ctx, smb_name);
++                      }
+                       if (r == NULL) {
+                               goto error;
+                       }
++
+                       pass = Get_Pwnam_alloc(tmp_ctx, r);
+                       if (pass != NULL) {
+                               a_string = realloc_string_sub(