summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorVolker Lendecke <vl@samba.org>2008-06-26 15:32:27 +0200
committerVolker Lendecke <vl@samba.org>2008-06-26 15:35:56 +0200
commit5a63e1dcb62144dcdf15ab80af6357d5954d27c1 (patch)
tree589798ae80a889af3b139d0178656f98ed8cc010
parent3c516937e80bcac5dd453dd9e6f83ccb67c5a22b (diff)
downloadsamba-5a63e1dcb62144dcdf15ab80af6357d5954d27c1.tar.gz
samba-5a63e1dcb62144dcdf15ab80af6357d5954d27c1.tar.bz2
samba-5a63e1dcb62144dcdf15ab80af6357d5954d27c1.zip
Fix a segfault in rpcclient adddriver
(cherry picked from commit d4b5a9d67389578f531527b339f6feead62f082d) (This used to be commit 8573032877317fe1f5c69e9ced5b19a33d8aefb0)
-rw-r--r--source3/rpcclient/cmd_spoolss.c25
1 files changed, 13 insertions, 12 deletions
diff --git a/source3/rpcclient/cmd_spoolss.c b/source3/rpcclient/cmd_spoolss.c
index fc4e0eb042..0876d82878 100644
--- a/source3/rpcclient/cmd_spoolss.c
+++ b/source3/rpcclient/cmd_spoolss.c
@@ -1219,13 +1219,13 @@ void set_drv_info_3_env (DRIVER_INFO_3 *info, const char *arch)
Needed to handle the empty parameter string denoted by "NULL"
*************************************************************************/
-static char* get_driver_3_param (char* str, const char* delim, UNISTR* dest)
+static char* get_driver_3_param (char* str, const char* delim, UNISTR* dest,
+ char **saveptr)
{
char *ptr;
- char *saveptr;
/* get the next token */
- ptr = strtok_r(str, delim, &saveptr);
+ ptr = strtok_r(str, delim, saveptr);
/* a string of 'NULL' is used to represent an empty
parameter because two consecutive delimiters
@@ -1255,17 +1255,18 @@ static bool init_drv_info_3_members ( TALLOC_CTX *mem_ctx, DRIVER_INFO_3 *info,
char *saveptr = NULL;
/* fill in the UNISTR fields */
- str = get_driver_3_param (args, ":", &info->name);
- str = get_driver_3_param (NULL, ":", &info->driverpath);
- str = get_driver_3_param (NULL, ":", &info->datafile);
- str = get_driver_3_param (NULL, ":", &info->configfile);
- str = get_driver_3_param (NULL, ":", &info->helpfile);
- str = get_driver_3_param (NULL, ":", &info->monitorname);
- str = get_driver_3_param (NULL, ":", &info->defaultdatatype);
+ str = get_driver_3_param (args, ":", &info->name, &saveptr);
+ str = get_driver_3_param (NULL, ":", &info->driverpath, &saveptr);
+ str = get_driver_3_param (NULL, ":", &info->datafile, &saveptr);
+ str = get_driver_3_param (NULL, ":", &info->configfile, &saveptr);
+ str = get_driver_3_param (NULL, ":", &info->helpfile, &saveptr);
+ str = get_driver_3_param (NULL, ":", &info->monitorname, &saveptr);
+ str = get_driver_3_param (NULL, ":", &info->defaultdatatype, &saveptr);
/* <Comma Separated List of Dependent Files> */
- str2 = get_driver_3_param (NULL, ":", NULL); /* save the beginning of the string */
- str = str2;
+ /* save the beginning of the string */
+ str2 = get_driver_3_param (NULL, ":", NULL, &saveptr);
+ str = str2;
/* begin to strip out each filename */
str = strtok_r(str, ",", &saveptr);