The Samba-Bugzilla – Attachment 16382 Details for
Bug 14606
vfs_virusfilter stops working after some time after startup
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Requests
|
Help
|
New Account
|
Log In
[x]
|
Forgot Password
Login:
[x]
[patch]
git-am fix for 4.12.next.
bug-14606-4.12 (text/plain), 5.70 KB, created by
Jeremy Allison
on 2021-01-07 23:00:56 UTC
(
hide
)
Description:
git-am fix for 4.12.next.
Filename:
MIME Type:
Creator:
Jeremy Allison
Created:
2021-01-07 23:00:56 UTC
Size:
5.70 KB
patch
obsolete
>From e881b8fd783dda8bd7bca63dc058da59b90b2168 Mon Sep 17 00:00:00 2001 >From: Arne Kreddig <arne@kreddig.net> >Date: Fri, 1 Jan 2021 22:54:22 +0100 >Subject: [PATCH] vfs_virusfilter: Allocate separate memory for config char* > >Instead of using only the pointer to the configuration char* from the >global configuration, vfs_virusfilter now allocates its own memory and >copies the char* from the global configuration. > >BUG: https://bugzilla.samba.org/show_bug.cgi?id=14606 >Signed-off-by: Arne Kreddig <arne@kreddig.net> >Reviewed-by: Volker Lendecke <vl@samba.org> >Reviewed-by: Jeremy Allison <jra@samba.org> > >Autobuild-User(master): Jeremy Allison <jra@samba.org> >Autobuild-Date(master): Thu Jan 7 19:25:38 UTC 2021 on sn-devel-184 > >(cherry picked from commit 2f21d1b0ac8526508161de73290f67858b2fe668) >--- > source3/modules/vfs_virusfilter.c | 66 ++++++++++++++++++++++++++----- > 1 file changed, 57 insertions(+), 9 deletions(-) > >diff --git a/source3/modules/vfs_virusfilter.c b/source3/modules/vfs_virusfilter.c >index 12f0364d2a7..6344afc1945 100644 >--- a/source3/modules/vfs_virusfilter.c >+++ b/source3/modules/vfs_virusfilter.c >@@ -196,6 +196,14 @@ static int virusfilter_vfs_connect( > struct virusfilter_config *config = NULL; > const char *exclude_files = NULL; > const char *temp_quarantine_dir_mode = NULL; >+ const char *infected_file_command = NULL; >+ const char *scan_error_command = NULL; >+ const char *quarantine_dir = NULL; >+ const char *quarantine_prefix = NULL; >+ const char *quarantine_suffix = NULL; >+ const char *rename_prefix = NULL; >+ const char *rename_suffix = NULL; >+ const char *socket_path = NULL; > char *sret = NULL; > char *tmp = NULL; > enum virusfilter_scanner_enum backend; >@@ -253,11 +261,21 @@ static int virusfilter_vfs_connect( > snum, "virusfilter", "infected file action", > virusfilter_actions, VIRUSFILTER_ACTION_DO_NOTHING); > >- config->infected_file_command = lp_parm_const_string( >+ 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; >+ } > >- config->scan_error_command = lp_parm_const_string( >+ 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; >+ } > > config->block_access_on_error = lp_parm_bool( > snum, "virusfilter", "block access on error", false); >@@ -265,9 +283,14 @@ static int virusfilter_vfs_connect( > tmp = talloc_asprintf(config, "%s/.quarantine", > handle->conn->connectpath); > >- config->quarantine_dir = lp_parm_const_string( >+ 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 (tmp != config->quarantine_dir) { > TALLOC_FREE(tmp); >@@ -281,13 +304,23 @@ static int virusfilter_vfs_connect( > config->quarantine_dir_mode = mode; > } > >- config->quarantine_prefix = lp_parm_const_string( >+ 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; >+ } > >- config->quarantine_suffix = lp_parm_const_string( >+ 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; >+ } > > /* > * Make sure prefixes and suffixes do not contain directory >@@ -318,13 +351,23 @@ static int virusfilter_vfs_connect( > config->quarantine_keep_name = lp_parm_bool( > snum, "virusfilter", "quarantine keep name", true); > >- config->rename_prefix = lp_parm_const_string( >+ 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; >+ } > >- config->rename_suffix = lp_parm_const_string( >+ 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; >+ } > > /* > * Make sure prefixes and suffixes do not contain directory >@@ -361,15 +404,20 @@ static int virusfilter_vfs_connect( > config->scan_error_close_errno = lp_parm_int( > snum, "virusfilter", "scan error errno on close", 0); > >- config->socket_path = lp_parm_const_string( >+ 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; >+ } > > /* canonicalize socket_path */ > if (config->socket_path != NULL && config->socket_path[0] != '/') { > DBG_ERR("socket path must be an absolute path. " > "Using backend default\n"); > config->socket_path = NULL; >- } >+ } > if (config->socket_path != NULL) { > canonicalize_absolute_path(handle, > config->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:
vl
:
review+
slow
:
review+
Actions:
View
Attachments on
bug 14606
:
16372
|
16381
| 16382