From 1db41d097615e57e2af7f8c0d5428aa8f211bb10 Mon Sep 17 00:00:00 2001 From: Anoop C S Date: Dec 08 2020 11:36:01 +0000 Subject: Fix crash in GlusterFS VFS module upstream bug: https://bugzilla.samba.org/show_bug.cgi?id=14486 --- diff --git a/SOURCES/fix-vfs-glusterfs-crash-in-write-behind-check.patch b/SOURCES/fix-vfs-glusterfs-crash-in-write-behind-check.patch new file mode 100644 index 0000000..a914aac --- /dev/null +++ b/SOURCES/fix-vfs-glusterfs-crash-in-write-behind-check.patch @@ -0,0 +1,83 @@ +From 9613a98bb3dfb906060edc87fed537eef59f19f1 Mon Sep 17 00:00:00 2001 +From: Jeremy Allison +Date: Tue, 10 Nov 2020 10:18:18 -0800 +Subject: [PATCH] s3: modules: gluster. Fix the error I made in preventing + talloc leaks from a function. +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +file_lines_parse() plays horrible tricks with +the passed-in talloc pointers and the hierarcy +which makes freeing hard to get right. + +As we know mem_ctx is freed by the caller, after +calling file_lines_parse don't free on exit and let the caller +handle it. This violates good Samba coding practice +but we know we're not leaking here. + +BUG: https://bugzilla.samba.org/show_bug.cgi?id=14486 + +Signed-off-by: Jeremy Allison +Reviewed-by: Guenther Deschner + +Autobuild-User(master): Günther Deschner +Autobuild-Date(master): Wed Nov 11 15:02:27 UTC 2020 on sn-devel-184 + +(cherry picked from commit 457b49c67803dd95abc8502c2a410fac273f6fba) +--- + source3/modules/vfs_glusterfs.c | 20 ++++++++++++-------- + 1 file changed, 12 insertions(+), 8 deletions(-) + +diff --git a/source3/modules/vfs_glusterfs.c b/source3/modules/vfs_glusterfs.c +index bdfe35ced82..17e945f7e78 100644 +--- a/source3/modules/vfs_glusterfs.c ++++ b/source3/modules/vfs_glusterfs.c +@@ -315,15 +315,25 @@ static int check_for_write_behind_translator(TALLOC_CTX *mem_ctx, + return -1; + } + ++ /* ++ * file_lines_parse() plays horrible tricks with ++ * the passed-in talloc pointers and the hierarcy ++ * which makes freeing hard to get right. ++ * ++ * As we know mem_ctx is freed by the caller, after ++ * this point don't free on exit and let the caller ++ * handle it. This violates good Samba coding practice ++ * but we know we're not leaking here. ++ */ ++ + lines = file_lines_parse(buf, + newlen, + &numlines, + mem_ctx); + if (lines == NULL || numlines <= 0) { +- TALLOC_FREE(option); +- TALLOC_FREE(buf); + return -1; + } ++ /* On success, buf is now a talloc child of lines !! */ + + for (i=0; i < numlines; i++) { + if (strequal(lines[i], option)) { +@@ -338,15 +348,9 @@ static int check_for_write_behind_translator(TALLOC_CTX *mem_ctx, + "Please check the vfs_glusterfs(8) manpage for " + "further details.\n", + volume); +- TALLOC_FREE(lines); +- TALLOC_FREE(option); +- TALLOC_FREE(buf); + return -1; + } + +- TALLOC_FREE(lines); +- TALLOC_FREE(option); +- TALLOC_FREE(buf); + return 0; + } + +-- +2.27.0 + + diff --git a/SPECS/samba.spec b/SPECS/samba.spec index 52099a0..c046cfb 100644 --- a/SPECS/samba.spec +++ b/SPECS/samba.spec @@ -6,7 +6,7 @@ # ctdb is enabled by default, you can disable it with: --without clustering %bcond_without clustering -%define main_release 1 +%define main_release 2 %define samba_version 4.12.10 %define talloc_version 2.3.1 @@ -122,6 +122,7 @@ Source100: ctdb.conf Source101: script.options Patch1: remove-talloc-ldb-requires-from-samba-policy.patch +Patch2: fix-vfs-glusterfs-crash-in-write-behind-check.patch BuildRoot: %(mktemp -ud %{_tmppath}/%{name}-%{version}-%{release}-XXXXXX) @@ -3809,6 +3810,10 @@ rm -rf %{buildroot} %endif %changelog +* Tue Dec 08 2020 - Anoop C S - 4.12.10-2 +- Fix crash in GlusterFS VFS module +- resolves: https://bugzilla.samba.org/show_bug.cgi?id=14486 + * Thu Nov 05 2020 - Anoop C S - 4.12.10-1 - v4.12.10 GA