The Samba-Bugzilla – Attachment 16482 Details for
Bug 14634
s3:modules:vfs_virusfilter: Recent talloc changes cause infinite start-up failure
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Requests
|
Help
|
New Account
|
Log In
[x]
|
Forgot Password
Login:
[x]
[patch]
git-am fix for 4.14.rcNext, 4.13.next, 4.12.next.
0001-s3-modules-vfs_virusfilter-Recent-talloc-changes-cau.patch (text/plain), 8.57 KB, created by
Jeremy Allison
on 2021-03-02 00:38:58 UTC
(
hide
)
Description:
git-am fix for 4.14.rcNext, 4.13.next, 4.12.next.
Filename:
MIME Type:
Creator:
Jeremy Allison
Created:
2021-03-02 00:38:58 UTC
Size:
8.57 KB
patch
obsolete
>From 48b9686f351537cec33bd9d35eb6cedae64868e8 Mon Sep 17 00:00:00 2001 >From: "Trever L. Adams" <trever.adams@gmail.com> >Date: Fri, 26 Feb 2021 14:52:03 -0800 >Subject: [PATCH] s3:modules:vfs_virusfilter: Recent talloc changes cause > infinite start-up failure > >Recent talloc changes cause the current check for failure to allocate to be incorrectly triggered. > >This patch checks to see if the original parameter to be checked for NULL if the talloc returns NULL. This allows for rapid passing in the ca > >BUG: https://bugzilla.samba.org/show_bug.cgi?id=14634 >RN: Fix failure of vfs_virusfilter starting due to talloc changes > >Signed-off-by: Trever L. Adams" <trever.adams@gmail.com> >Reviewed-by: Jeremy Allison <jra@samba.org> >Reviewed-by: Noel Power <noel.power@suse.com> >(cherry picked from commit 5a92810082c9a9d2833946ae0d83ce05a6bde597) >--- > source3/modules/vfs_virusfilter.c | 157 +++++++++++++++++------------- > 1 file changed, 90 insertions(+), 67 deletions(-) > >diff --git a/source3/modules/vfs_virusfilter.c b/source3/modules/vfs_virusfilter.c >index 290d9a23335..c9f5e2bf908 100644 >--- a/source3/modules/vfs_virusfilter.c >+++ b/source3/modules/vfs_virusfilter.c >@@ -267,18 +267,21 @@ static int virusfilter_vfs_connect( > > infected_file_command = lp_parm_const_string( > snum, "virusfilter", "infected file command", NULL); >- config->infected_file_command = talloc_strdup(config, infected_file_command); >- if (config->infected_file_command == NULL) { >- DBG_ERR("virusfilter-vfs: out of memory!\n"); >- return -1; >+ if (infected_file_command != NULL) { >+ config->infected_file_command = talloc_strdup(config, infected_file_command); >+ if (config->infected_file_command == NULL) { >+ DBG_ERR("virusfilter-vfs: out of memory!\n"); >+ return -1; >+ } > } >- > scan_error_command = lp_parm_const_string( > snum, "virusfilter", "scan error command", NULL); >- config->scan_error_command = talloc_strdup(config, scan_error_command); >- if (config->scan_error_command == NULL) { >- DBG_ERR("virusfilter-vfs: out of memory!\n"); >- return -1; >+ if (scan_error_command != NULL) { >+ config->scan_error_command = talloc_strdup(config, scan_error_command); >+ if (config->scan_error_command == NULL) { >+ DBG_ERR("virusfilter-vfs: out of memory!\n"); >+ return -1; >+ } > } > > config->block_access_on_error = lp_parm_bool( >@@ -290,10 +293,12 @@ static int virusfilter_vfs_connect( > quarantine_dir = lp_parm_const_string( > snum, "virusfilter", "quarantine directory", > tmp ? tmp : "/tmp/.quarantine"); >- config->quarantine_dir = talloc_strdup(config, quarantine_dir); >- if (config->quarantine_dir == NULL) { >- DBG_ERR("virusfilter-vfs: out of memory!\n"); >- return -1; >+ if (quarantine_dir != NULL) { >+ config->quarantine_dir = talloc_strdup(config, quarantine_dir); >+ if (config->quarantine_dir == NULL) { >+ DBG_ERR("virusfilter-vfs: out of memory!\n"); >+ return -1; >+ } > } > > if (tmp != config->quarantine_dir) { >@@ -311,42 +316,50 @@ static int virusfilter_vfs_connect( > quarantine_prefix = lp_parm_const_string( > snum, "virusfilter", "quarantine prefix", > VIRUSFILTER_DEFAULT_QUARANTINE_PREFIX); >- config->quarantine_prefix = talloc_strdup(config, quarantine_prefix); >- if (config->quarantine_prefix == NULL) { >- DBG_ERR("virusfilter-vfs: out of memory!\n"); >- return -1; >+ if (quarantine_prefix != NULL) { >+ config->quarantine_prefix = talloc_strdup(config, quarantine_prefix); >+ if (config->quarantine_prefix == NULL) { >+ DBG_ERR("virusfilter-vfs: out of memory!\n"); >+ return -1; >+ } > } > > quarantine_suffix = lp_parm_const_string( > snum, "virusfilter", "quarantine suffix", > VIRUSFILTER_DEFAULT_QUARANTINE_SUFFIX); >- config->quarantine_suffix = talloc_strdup(config, quarantine_suffix); >- if (config->quarantine_suffix == NULL) { >- DBG_ERR("virusfilter-vfs: out of memory!\n"); >- return -1; >+ if (quarantine_suffix != NULL) { >+ config->quarantine_suffix = talloc_strdup(config, quarantine_suffix); >+ if (config->quarantine_suffix == NULL) { >+ DBG_ERR("virusfilter-vfs: out of memory!\n"); >+ return -1; >+ } > } > > /* > * Make sure prefixes and suffixes do not contain directory > * delimiters > */ >- sret = strstr(config->quarantine_prefix, "/"); >- if (sret != NULL) { >- DBG_ERR("quarantine prefix must not contain directory " >- "delimiter(s) such as '/' (%s replaced with %s)\n", >- config->quarantine_prefix, >- VIRUSFILTER_DEFAULT_QUARANTINE_PREFIX); >- config->quarantine_prefix = >- VIRUSFILTER_DEFAULT_QUARANTINE_PREFIX; >- } >- sret = strstr(config->quarantine_suffix, "/"); >- if (sret != NULL) { >- DBG_ERR("quarantine suffix must not contain directory " >- "delimiter(s) such as '/' (%s replaced with %s)\n", >- config->quarantine_suffix, >- VIRUSFILTER_DEFAULT_QUARANTINE_SUFFIX); >- config->quarantine_suffix = >- VIRUSFILTER_DEFAULT_QUARANTINE_SUFFIX; >+ if (config->quarantine_prefix != NULL) { >+ sret = strstr(config->quarantine_prefix, "/"); >+ if (sret != NULL) { >+ DBG_ERR("quarantine prefix must not contain directory " >+ "delimiter(s) such as '/' (%s replaced with %s)\n", >+ config->quarantine_prefix, >+ VIRUSFILTER_DEFAULT_QUARANTINE_PREFIX); >+ config->quarantine_prefix = >+ VIRUSFILTER_DEFAULT_QUARANTINE_PREFIX; >+ } >+ } >+ if (config->quarantine_suffix != NULL) { >+ sret = strstr(config->quarantine_suffix, "/"); >+ if (sret != NULL) { >+ DBG_ERR("quarantine suffix must not contain directory " >+ "delimiter(s) such as '/' (%s replaced with %s)\n", >+ config->quarantine_suffix, >+ VIRUSFILTER_DEFAULT_QUARANTINE_SUFFIX); >+ config->quarantine_suffix = >+ VIRUSFILTER_DEFAULT_QUARANTINE_SUFFIX; >+ } > } > > config->quarantine_keep_tree = lp_parm_bool( >@@ -358,42 +371,50 @@ static int virusfilter_vfs_connect( > rename_prefix = lp_parm_const_string( > snum, "virusfilter", "rename prefix", > VIRUSFILTER_DEFAULT_RENAME_PREFIX); >- config->rename_prefix = talloc_strdup(config, rename_prefix); >- if (config->rename_prefix == NULL) { >- DBG_ERR("virusfilter-vfs: out of memory!\n"); >- return -1; >+ if (rename_prefix != NULL) { >+ config->rename_prefix = talloc_strdup(config, rename_prefix); >+ if (config->rename_prefix == NULL) { >+ DBG_ERR("virusfilter-vfs: out of memory!\n"); >+ return -1; >+ } > } > > rename_suffix = lp_parm_const_string( > snum, "virusfilter", "rename suffix", > VIRUSFILTER_DEFAULT_RENAME_SUFFIX); >- config->rename_suffix = talloc_strdup(config, rename_suffix); >- if (config->rename_suffix == NULL) { >- DBG_ERR("virusfilter-vfs: out of memory!\n"); >- return -1; >+ if (rename_suffix != NULL) { >+ config->rename_suffix = talloc_strdup(config, rename_suffix); >+ if (config->rename_suffix == NULL) { >+ DBG_ERR("virusfilter-vfs: out of memory!\n"); >+ return -1; >+ } > } > > /* > * Make sure prefixes and suffixes do not contain directory > * delimiters > */ >- sret = strstr(config->rename_prefix, "/"); >- if (sret != NULL) { >- DBG_ERR("rename prefix must not contain directory " >- "delimiter(s) such as '/' (%s replaced with %s)\n", >- config->rename_prefix, >- VIRUSFILTER_DEFAULT_RENAME_PREFIX); >- config->rename_prefix = >- VIRUSFILTER_DEFAULT_RENAME_PREFIX; >- } >- sret = strstr(config->rename_suffix, "/"); >- if (sret != NULL) { >- DBG_ERR("rename suffix must not contain directory " >- "delimiter(s) such as '/' (%s replaced with %s)\n", >- config->rename_suffix, >- VIRUSFILTER_DEFAULT_RENAME_SUFFIX); >- config->rename_suffix = >- VIRUSFILTER_DEFAULT_RENAME_SUFFIX; >+ if (config->rename_prefix != NULL) { >+ sret = strstr(config->rename_prefix, "/"); >+ if (sret != NULL) { >+ DBG_ERR("rename prefix must not contain directory " >+ "delimiter(s) such as '/' (%s replaced with %s)\n", >+ config->rename_prefix, >+ VIRUSFILTER_DEFAULT_RENAME_PREFIX); >+ config->rename_prefix = >+ VIRUSFILTER_DEFAULT_RENAME_PREFIX; >+ } >+ } >+ if (config->rename_suffix != NULL) { >+ sret = strstr(config->rename_suffix, "/"); >+ if (sret != NULL) { >+ DBG_ERR("rename suffix must not contain directory " >+ "delimiter(s) such as '/' (%s replaced with %s)\n", >+ config->rename_suffix, >+ VIRUSFILTER_DEFAULT_RENAME_SUFFIX); >+ config->rename_suffix = >+ VIRUSFILTER_DEFAULT_RENAME_SUFFIX; >+ } > } > > config->infected_open_errno = lp_parm_int( >@@ -410,10 +431,12 @@ static int virusfilter_vfs_connect( > > socket_path = lp_parm_const_string( > snum, "virusfilter", "socket path", NULL); >- config->socket_path = talloc_strdup(config, socket_path); >- if (config->socket_path == NULL) { >- DBG_ERR("virusfilter-vfs: out of memory!\n"); >- return -1; >+ if (socket_path != NULL) { >+ config->socket_path = talloc_strdup(config, socket_path); >+ if (config->socket_path == NULL) { >+ DBG_ERR("virusfilter-vfs: out of memory!\n"); >+ return -1; >+ } > } > > /* canonicalize socket_path */ >-- >2.27.0 >
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Raw
Flags:
npower
:
review+
dmulder
:
review+
Actions:
View
Attachments on
bug 14634
:
16435
|
16475
| 16482