[SCM] Samba Shared Repository - branch master updated
Jeremy Allison
jra at samba.org
Fri May 24 20:13:02 UTC 2019
The branch, master has been updated
via 77eabd74e9a docs: dfree command. Correct usage of dfree scripts.
via 9fa95d5b453 lib: util: Finally remove possibilities of using sys_popen() unsafely.
via dbfa3cd1864 s3: lib: Rename all uses of file_pload_XXX -> file_ploadv_XXX.
via d5c363d65d7 s3: lib: Remove file_pload_send().
via 449d49946b2 s3: winbind: Convert idmap to use file_ploadv_send().
via 61054e53f53 s3: lib: Add file_ploadv_send().
via c5729ae4421 lib: util: Remove file_pload()
via 02bc0ce9d22 s3: lib: Remove file_lines_pload().
via 4a63e3b9659 s3: smbd: Convert sysquotas.c code to use file_lines_ploadv().
via f9ccf1cc3df s3: smbd: Convert print_svid code to use file_lines_ploadv().
via d6453e1ffd9 s3: smbd: Convert dfree code to use file_lines_ploadv().
via 3b19412baed s3: lib: util: Add file_lines_ploadv().
via 5c34fa0b85e lib: util: Add file_ploadv().
via f20538de041 lib: popen: Prepare to remove sys_popen().
from 77117a14b91 docs: Add another dns forwarder in the example.
https://git.samba.org/?p=samba.git;a=shortlog;h=master
- Log -----------------------------------------------------------------
commit 77eabd74e9a28b1e6decf0890a9ef4c83fa002d4
Author: Jeremy Allison <jra at samba.org>
Date: Sat May 18 11:41:56 2019 -0700
docs: dfree command. Correct usage of dfree scripts.
Add quotes to the sample scripts to prevent incorrect
parameter usage.
BUG: https://bugzilla.samba.org/show_bug.cgi?id=13964
Signed-off-by: Jeremy Allison <jra at samba.org>
Reviewed-by: Ralph Boehme <slow at samba.org>
Autobuild-User(master): Jeremy Allison <jra at samba.org>
Autobuild-Date(master): Fri May 24 20:12:02 UTC 2019 on sn-devel-184
commit 9fa95d5b45369acfdd38923e8618e94e5d04b07e
Author: Jeremy Allison <jra at samba.org>
Date: Sat May 18 11:40:26 2019 -0700
lib: util: Finally remove possibilities of using sys_popen() unsafely.
All code now uses sys_popenv() which is much
harder to use incorrectly.
Remove the extract_args() function that was the
cause of possible issues.
BUG: https://bugzilla.samba.org/show_bug.cgi?id=13964
Signed-off-by: Jeremy Allison <jra at samba.org>
Reviewed-by: Ralph Boehme <slow at samba.org>
commit dbfa3cd186428c02589aa9093e868554b4c695d5
Author: Ralph Boehme <slow at samba.org>
Date: Fri May 24 19:08:10 2019 +0200
s3: lib: Rename all uses of file_pload_XXX -> file_ploadv_XXX.
Keep naming consistent across all usage.
BUG: https://bugzilla.samba.org/show_bug.cgi?id=13964
Signed-off-by: Jeremy Allison <jra at samba.org>
Reviewed-by: Ralph Boehme <slow at samba.org>
commit d5c363d65d771c792523f2f3e526c90514212fc2
Author: Jeremy Allison <jra at samba.org>
Date: Sat May 18 11:32:05 2019 -0700
s3: lib: Remove file_pload_send().
No longer used.
BUG: https://bugzilla.samba.org/show_bug.cgi?id=13964
Signed-off-by: Jeremy Allison <jra at samba.org>
Reviewed-by: Ralph Boehme <slow at samba.org>
commit 449d49946b295f574e1fed83b5a5ffbf1c1b1e30
Author: Jeremy Allison <jra at samba.org>
Date: Sat May 18 11:25:01 2019 -0700
s3: winbind: Convert idmap to use file_ploadv_send().
BUG: https://bugzilla.samba.org/show_bug.cgi?id=13964
Signed-off-by: Jeremy Allison <jra at samba.org>
Reviewed-by: Ralph Boehme <slow at samba.org>
commit 61054e53f53e5884902b566b1f9b454a3ff4741f
Author: Jeremy Allison <jra at samba.org>
Date: Sat May 18 11:18:19 2019 -0700
s3: lib: Add file_ploadv_send().
Not yet used. Preparing to remove file_pload_send()
with this safer alternative.
BUG: https://bugzilla.samba.org/show_bug.cgi?id=13964
Signed-off-by: Jeremy Allison <jra at samba.org>
Reviewed-by: Ralph Boehme <slow at samba.org>
commit c5729ae44219ec81008040d4d50f0f5fdf254201
Author: Jeremy Allison <jra at samba.org>
Date: Sat May 18 11:14:53 2019 -0700
lib: util: Remove file_pload()
No longer used.
BUG: https://bugzilla.samba.org/show_bug.cgi?id=13964
Signed-off-by: Jeremy Allison <jra at samba.org>
Reviewed-by: Ralph Boehme <slow at samba.org>
commit 02bc0ce9d22117b464bae47c5d09c45b4f7c2272
Author: Jeremy Allison <jra at samba.org>
Date: Sat May 18 11:10:40 2019 -0700
s3: lib: Remove file_lines_pload().
No longer used.
BUG: https://bugzilla.samba.org/show_bug.cgi?id=13964
Signed-off-by: Jeremy Allison <jra at samba.org>
Reviewed-by: Ralph Boehme <slow at samba.org>
commit 4a63e3b9659c8715d436c66dee8bf420e2ea89fb
Author: Jeremy Allison <jra at samba.org>
Date: Sat May 18 11:08:15 2019 -0700
s3: smbd: Convert sysquotas.c code to use file_lines_ploadv().
BUG: https://bugzilla.samba.org/show_bug.cgi?id=13964
Signed-off-by: Jeremy Allison <jra at samba.org>
Reviewed-by: Ralph Boehme <slow at samba.org>
commit f9ccf1cc3df13138a1a4b645c8190238ce011f04
Author: Jeremy Allison <jra at samba.org>
Date: Thu May 16 22:18:40 2019 -0700
s3: smbd: Convert print_svid code to use file_lines_ploadv().
BUG: https://bugzilla.samba.org/show_bug.cgi?id=13964
Signed-off-by: Jeremy Allison <jra at samba.org>
Reviewed-by: Ralph Boehme <slow at samba.org>
commit d6453e1ffd92c7754862389a933a9fd9089ce518
Author: Jeremy Allison <jra at samba.org>
Date: Thu May 16 22:11:49 2019 -0700
s3: smbd: Convert dfree code to use file_lines_ploadv().
BUG: https://bugzilla.samba.org/show_bug.cgi?id=13964
Signed-off-by: Jeremy Allison <jra at samba.org>
Reviewed-by: Ralph Boehme <slow at samba.org>
commit 3b19412baedfffb7adc2a79471f5b17990259c31
Author: Jeremy Allison <jra at samba.org>
Date: Thu May 16 22:10:51 2019 -0700
s3: lib: util: Add file_lines_ploadv().
Not yet used.
Duplicate code to file_lines_pload() except uses vectored
argument list. file_lines_pload() will be removed once all
callers are converted.
BUG: https://bugzilla.samba.org/show_bug.cgi?id=13964
Signed-off-by: Jeremy Allison <jra at samba.org>
Reviewed-by: Ralph Boehme <slow at samba.org>
commit 5c34fa0b85e4d9a3c5fd4fa0b39af4772ec023db
Author: Jeremy Allison <jra at samba.org>
Date: Thu May 16 21:56:13 2019 -0700
lib: util: Add file_ploadv().
Not yet used.
Duplicate code to file_pload() except uses vectored
argument list. file_pload() will be removed once all
callers are converted.
BUG: https://bugzilla.samba.org/show_bug.cgi?id=13964
Signed-off-by: Jeremy Allison <jra at samba.org>
Reviewed-by: Ralph Boehme <slow at samba.org>
commit f20538de041eed1cadbabe2149b2b7cfcb779cb5
Author: Jeremy Allison <jra at samba.org>
Date: Thu May 16 21:45:21 2019 -0700
lib: popen: Prepare to remove sys_popen().
Add sys_popenv(char * const argl[]) that uses a NULL
terminated vector array of args. Change sys_popen() to
split up its command string and call sys_popenv().
Once all callers are converted to sys_popenv() we
can remove sys_popen().
BUG: https://bugzilla.samba.org/show_bug.cgi?id=13964
Signed-off-by: Jeremy Allison <jra at samba.org>
Reviewed-by: Ralph Boehme <slow at samba.org>
-----------------------------------------------------------------------
Summary of changes:
docs-xml/smbdotconf/misc/dfreecommand.xml | 6 +-
lib/util/samba_util.h | 2 +-
lib/util/sys_popen.c | 104 +++---------------------
lib/util/sys_popen.h | 2 +-
lib/util/util_file.c | 20 ++---
source3/lib/sysquotas.c | 126 +++++++++++++++++++++++++-----
source3/lib/util_file.c | 45 +++++------
source3/lib/util_file.h | 10 +--
source3/printing/print_svid.c | 29 ++++++-
source3/smbd/dfree.c | 35 ++++++---
source3/winbindd/idmap_script.c | 61 +++++++++++----
11 files changed, 260 insertions(+), 180 deletions(-)
Changeset truncated at 500 lines:
diff --git a/docs-xml/smbdotconf/misc/dfreecommand.xml b/docs-xml/smbdotconf/misc/dfreecommand.xml
index a678bb44adf..a1eed4948a6 100644
--- a/docs-xml/smbdotconf/misc/dfreecommand.xml
+++ b/docs-xml/smbdotconf/misc/dfreecommand.xml
@@ -40,14 +40,16 @@
Where the script dfree (which must be made executable) could be:
<programlisting format="linespecific">
#!/bin/sh
-df $1 | tail -1 | awk '{print $(NF-4),$(NF-2)}'
+df "$1" | tail -1 | awk '{print $(NF-4),$(NF-2)}'
</programlisting>
or perhaps (on Sys V based systems):
<programlisting format="linespecific">
#!/bin/sh
-/usr/bin/df -k $1 | tail -1 | awk '{print $3" "$5}'
+/usr/bin/df -k "$1" | tail -1 | awk '{print $3" "$5}'
</programlisting>
Note that you may have to replace the command names with full path names on some systems.
+ Also note the arguments passed into the script should be quoted inside the script in case they
+ contain special characters such as spaces or newlines.
</para>
<para>
diff --git a/lib/util/samba_util.h b/lib/util/samba_util.h
index 0722426216e..f0aa42e7271 100644
--- a/lib/util/samba_util.h
+++ b/lib/util/samba_util.h
@@ -404,7 +404,7 @@ bool file_compare(const char *path1, const char *path2);
/*
load from a pipe into memory.
*/
-char *file_pload(const char *syscmd, size_t *size);
+char *file_ploadv(char * const argl[], size_t *size);
/* The following definitions come from lib/util/util.c */
diff --git a/lib/util/sys_popen.c b/lib/util/sys_popen.c
index 709f1822f33..659e99ba736 100644
--- a/lib/util/sys_popen.c
+++ b/lib/util/sys_popen.c
@@ -24,77 +24,6 @@
#include "lib/util/sys_popen.h"
#include "lib/util/debug.h"
-/**************************************************************************
- Extract a command into an arg list.
-****************************************************************************/
-
-static char **extract_args(TALLOC_CTX *mem_ctx, const char *command)
-{
- char *trunc_cmd;
- char *saveptr;
- char *ptr;
- int argcl;
- char **argl = NULL;
- int i;
-
- if (!(trunc_cmd = talloc_strdup(mem_ctx, command))) {
- DEBUG(0, ("talloc failed\n"));
- goto nomem;
- }
-
- if(!(ptr = strtok_r(trunc_cmd, " \t", &saveptr))) {
- TALLOC_FREE(trunc_cmd);
- errno = EINVAL;
- return NULL;
- }
-
- /*
- * Count the args.
- */
-
- for( argcl = 1; ptr; ptr = strtok_r(NULL, " \t", &saveptr))
- argcl++;
-
- TALLOC_FREE(trunc_cmd);
-
- if (!(argl = talloc_array(mem_ctx, char *, argcl + 1))) {
- goto nomem;
- }
-
- /*
- * Now do the extraction.
- */
-
- if (!(trunc_cmd = talloc_strdup(mem_ctx, command))) {
- goto nomem;
- }
-
- ptr = strtok_r(trunc_cmd, " \t", &saveptr);
- i = 0;
-
- if (!(argl[i++] = talloc_strdup(argl, ptr))) {
- goto nomem;
- }
-
- while((ptr = strtok_r(NULL, " \t", &saveptr)) != NULL) {
-
- if (!(argl[i++] = talloc_strdup(argl, ptr))) {
- goto nomem;
- }
- }
-
- argl[i++] = NULL;
- TALLOC_FREE(trunc_cmd);
- return argl;
-
- nomem:
- DEBUG(0, ("talloc failed\n"));
- TALLOC_FREE(trunc_cmd);
- TALLOC_FREE(argl);
- errno = ENOMEM;
- return NULL;
-}
-
/**************************************************************************
Wrapper for popen. Safer as it doesn't search a path.
Modified from the glibc sources.
@@ -110,14 +39,19 @@ typedef struct _popen_list
static popen_list *popen_chain;
-int sys_popen(const char *command)
+int sys_popenv(char * const argl[])
{
int parent_end, child_end;
int pipe_fds[2];
popen_list *entry = NULL;
- char **argl = NULL;
+ const char *command = argl[0];
int ret;
+ if (argl == NULL) {
+ errno = EINVAL;
+ return -1;
+ }
+
if (!*command) {
errno = EINVAL;
return -1;
@@ -125,8 +59,8 @@ int sys_popen(const char *command)
ret = pipe(pipe_fds);
if (ret < 0) {
- DEBUG(0, ("sys_popen: error opening pipe: %s\n",
- strerror(errno)));
+ DBG_ERR("error opening pipe: %s\n",
+ strerror(errno));
return -1;
}
@@ -135,24 +69,14 @@ int sys_popen(const char *command)
entry = talloc_zero(NULL, popen_list);
if (entry == NULL) {
- DEBUG(0, ("sys_popen: malloc failed\n"));
- goto err_exit;
- }
-
- /*
- * Extract the command and args into a NULL terminated array.
- */
-
- argl = extract_args(NULL, command);
- if (argl == NULL) {
- DEBUG(0, ("sys_popen: extract_args() failed: %s\n", strerror(errno)));
+ DBG_ERR("talloc failed\n");
goto err_exit;
}
entry->child_pid = fork();
if (entry->child_pid == -1) {
- DEBUG(0, ("sys_popen: fork failed: %s\n", strerror(errno)));
+ DBG_ERR("fork failed: %s\n", strerror(errno));
goto err_exit;
}
@@ -182,8 +106,8 @@ int sys_popen(const char *command)
ret = execv(argl[0], argl);
if (ret == -1) {
- DEBUG(0, ("sys_popen: ERROR executing command "
- "'%s': %s\n", command, strerror(errno)));
+ DBG_ERR("ERROR executing command "
+ "'%s': %s\n", command, strerror(errno));
}
_exit (127);
}
@@ -193,7 +117,6 @@ int sys_popen(const char *command)
*/
close (child_end);
- TALLOC_FREE(argl);
/* Link into popen_chain. */
entry->next = popen_chain;
@@ -205,7 +128,6 @@ int sys_popen(const char *command)
err_exit:
TALLOC_FREE(entry);
- TALLOC_FREE(argl);
close(pipe_fds[0]);
close(pipe_fds[1]);
return -1;
diff --git a/lib/util/sys_popen.h b/lib/util/sys_popen.h
index 6807d3c5061..be437483626 100644
--- a/lib/util/sys_popen.h
+++ b/lib/util/sys_popen.h
@@ -20,7 +20,7 @@
#ifndef __LIB_SYS_POPEN_H__
#define __LIB_SYS_POPEN_H__
-int sys_popen(const char *command);
+int sys_popenv(char * const argl[]);
int sys_pclose(int fd);
#endif
diff --git a/lib/util/util_file.c b/lib/util/util_file.c
index 7a8644e3f5d..79276153015 100644
--- a/lib/util/util_file.c
+++ b/lib/util/util_file.c
@@ -398,29 +398,27 @@ bool file_compare(const char *path1, const char *path2)
return true;
}
-
/**
Load from a pipe into memory.
**/
-char *file_pload(const char *syscmd, size_t *size)
+char *file_ploadv(char * const argl[], size_t *size)
{
int fd, n;
- char *p;
+ char *p = NULL;
char buf[1024];
size_t total;
- fd = sys_popen(syscmd);
+ fd = sys_popenv(argl);
if (fd == -1) {
return NULL;
}
- p = NULL;
total = 0;
while ((n = sys_read(fd, buf, sizeof(buf))) > 0) {
p = talloc_realloc(NULL, p, char, total + n + 1);
- if (!p) {
- DEBUG(0,("file_pload: failed to expand buffer!\n"));
+ if (p == NULL) {
+ DBG_ERR("failed to expand buffer!\n");
close(fd);
return NULL;
}
@@ -428,13 +426,15 @@ char *file_pload(const char *syscmd, size_t *size)
total += n;
}
- if (p) {
+ if (p != NULL) {
p[total] = 0;
}
- /* FIXME: Perhaps ought to check that the command completed
+ /*
+ * FIXME: Perhaps ought to check that the command completed
* successfully (returned 0); if not the data may be
- * truncated. */
+ * truncated.
+ */
sys_pclose(fd);
if (size) {
diff --git a/source3/lib/sysquotas.c b/source3/lib/sysquotas.c
index 43a451da596..864d9dd5c56 100644
--- a/source3/lib/sysquotas.c
+++ b/source3/lib/sysquotas.c
@@ -251,9 +251,9 @@ static int command_get_quota(const char *path, enum SMB_QUOTA_TYPE qtype, unid_t
if (get_quota_command && *get_quota_command) {
const char *p;
char *p2;
- char *syscmd = NULL;
int _id = -1;
int error = 0;
+ char **argl = NULL;
switch(qtype) {
case SMB_USER_QUOTA_TYPE:
@@ -269,15 +269,40 @@ static int command_get_quota(const char *path, enum SMB_QUOTA_TYPE qtype, unid_t
return -1;
}
- if (asprintf(&syscmd, "%s %s %d %d",
- get_quota_command, path, qtype, _id) < 0) {
+ argl = talloc_zero_array(talloc_tos(), char *, 5);
+ if (argl == NULL) {
return -1;
}
+ argl[0] = talloc_strdup(argl, get_quota_command);
+ if (argl[0] == NULL) {
+ TALLOC_FREE(argl);
+ return -1;
+ }
+ argl[1] = talloc_strdup(argl, path);
+ if (argl[1] == NULL) {
+ TALLOC_FREE(argl);
+ return -1;
+ }
+ argl[2] = talloc_asprintf(argl, "%d", qtype);
+ if (argl[2] == NULL) {
+ TALLOC_FREE(argl);
+ return -1;
+ }
+ argl[3] = talloc_asprintf(argl, "%d", _id);
+ if (argl[3] == NULL) {
+ TALLOC_FREE(argl);
+ return -1;
+ }
+ argl[4] = NULL;
- DEBUG (3, ("get_quota: Running command %s\n", syscmd));
+ DBG_NOTICE("Running command %s %s %d %d\n",
+ get_quota_command,
+ path,
+ qtype,
+ _id);
- lines = file_lines_pload(talloc_tos(), syscmd, NULL);
- SAFE_FREE(syscmd);
+ lines = file_lines_ploadv(talloc_tos(), argl, NULL);
+ TALLOC_FREE(argl);
if (lines) {
char *line = lines[0];
@@ -399,8 +424,8 @@ static int command_set_quota(const char *path, enum SMB_QUOTA_TYPE qtype, unid_t
set_quota_command = lp_set_quota_command(talloc_tos());
if (set_quota_command && *set_quota_command) {
char **lines = NULL;
- char *syscmd = NULL;
int _id = -1;
+ char **argl = NULL;
switch(qtype) {
case SMB_USER_QUOTA_TYPE:
@@ -415,21 +440,84 @@ static int command_set_quota(const char *path, enum SMB_QUOTA_TYPE qtype, unid_t
return -1;
}
- if (asprintf(&syscmd,
- "%s %s %d %d "
- "%u %llu %llu "
- "%llu %llu %llu ",
- set_quota_command, path, qtype, _id, dp->qflags,
- (long long unsigned)dp->softlimit,(long long unsigned)dp->hardlimit,
- (long long unsigned)dp->isoftlimit,(long long unsigned)dp->ihardlimit,
- (long long unsigned)dp->bsize) < 0) {
+ argl = talloc_zero_array(talloc_tos(), char *, 11);
+ if (argl == NULL) {
return -1;
}
+ argl[0] = talloc_strdup(argl, set_quota_command);
+ if (argl[0] == NULL) {
+ TALLOC_FREE(argl);
+ return -1;
+ }
+ argl[1] = talloc_strdup(argl, path);
+ if (argl[1] == NULL) {
+ TALLOC_FREE(argl);
+ return -1;
+ }
+ argl[2] = talloc_asprintf(argl, "%d", qtype);
+ if (argl[2] == NULL) {
+ TALLOC_FREE(argl);
+ return -1;
+ }
+ argl[3] = talloc_asprintf(argl, "%d", _id);
+ if (argl[3] == NULL) {
+ TALLOC_FREE(argl);
+ return -1;
+ }
+ argl[4] = talloc_asprintf(argl, "%u", dp->qflags);
+ if (argl[4] == NULL) {
+ TALLOC_FREE(argl);
+ return -1;
+ }
+ argl[5] = talloc_asprintf(argl, "%llu",
+ (long long unsigned)dp->softlimit);
+ if (argl[5] == NULL) {
+ TALLOC_FREE(argl);
+ return -1;
+ }
+ argl[6] = talloc_asprintf(argl, "%llu",
+ (long long unsigned)dp->hardlimit);
+ if (argl[6] == NULL) {
+ TALLOC_FREE(argl);
+ return -1;
+ }
+ argl[7] = talloc_asprintf(argl, "%llu",
+ (long long unsigned)dp->isoftlimit);
+ if (argl[7] == NULL) {
+ TALLOC_FREE(argl);
+ return -1;
+ }
+ argl[8] = talloc_asprintf(argl, "%llu",
+ (long long unsigned)dp->ihardlimit);
+ if (argl[8] == NULL) {
+ TALLOC_FREE(argl);
+ return -1;
+ }
+ argl[9] = talloc_asprintf(argl, "%llu",
+ (long long unsigned)dp->bsize);
+ if (argl[9] == NULL) {
+ TALLOC_FREE(argl);
+ return -1;
+ }
+ argl[10] = NULL;
- DBG_NOTICE("set_quota: Running command %s\n", syscmd);
-
- lines = file_lines_pload(talloc_tos(), syscmd, NULL);
- SAFE_FREE(syscmd);
+ DBG_NOTICE("Running command "
+ "%s %s %d %d "
+ "%u %llu %llu "
+ "%llu %llu %llu ",
+ set_quota_command,
+ path,
+ qtype,
+ _id,
+ dp->qflags,
+ (long long unsigned)dp->softlimit,
+ (long long unsigned)dp->hardlimit,
+ (long long unsigned)dp->isoftlimit,
+ (long long unsigned)dp->ihardlimit,
+ (long long unsigned)dp->bsize);
+
+ lines = file_lines_ploadv(talloc_tos(), argl, NULL);
+ TALLOC_FREE(argl);
if (lines) {
char *line = lines[0];
diff --git a/source3/lib/util_file.c b/source3/lib/util_file.c
index cfbcf278caa..1c468ea5501 100644
--- a/source3/lib/util_file.c
+++ b/source3/lib/util_file.c
@@ -26,46 +26,46 @@
#include "lib/async_req/async_sock.h"
#include "lib/util/tevent_unix.h"
-struct file_pload_state {
+struct file_ploadv_state {
struct tevent_context *ev;
size_t maxsize;
int fd;
uint8_t *buf;
};
-static int file_pload_state_destructor(struct file_pload_state *s);
-static void file_pload_readable(struct tevent_req *subreq);
+static int file_ploadv_state_destructor(struct file_ploadv_state *s);
+static void file_ploadv_readable(struct tevent_req *subreq);
-struct tevent_req *file_pload_send(TALLOC_CTX *mem_ctx,
+struct tevent_req *file_ploadv_send(TALLOC_CTX *mem_ctx,
struct tevent_context *ev,
- const char *syscmd, size_t maxsize)
+ char * const argl[], size_t maxsize)
{
- struct tevent_req *req, *subreq;
- struct file_pload_state *state;
+ struct tevent_req *req = NULL, *subreq = NULL;
+ struct file_ploadv_state *state = NULL;
- req = tevent_req_create(mem_ctx, &state, struct file_pload_state);
+ req = tevent_req_create(mem_ctx, &state, struct file_ploadv_state);
if (req == NULL) {
return NULL;
}
state->ev = ev;
state->maxsize = maxsize;
- state->fd = sys_popen(syscmd);
+ state->fd = sys_popenv(argl);
if (state->fd == -1) {
tevent_req_error(req, errno);
return tevent_req_post(req, ev);
}
- talloc_set_destructor(state, file_pload_state_destructor);
+ talloc_set_destructor(state, file_ploadv_state_destructor);
subreq = wait_for_read_send(state, state->ev, state->fd, false);
if (tevent_req_nomem(subreq, req)) {
return tevent_req_post(req, ev);
}
- tevent_req_set_callback(subreq, file_pload_readable, req);
+ tevent_req_set_callback(subreq, file_ploadv_readable, req);
return req;
--
Samba Shared Repository
More information about the samba-cvs
mailing list