mirror of
https://github.com/samba-team/samba.git
synced 2025-03-27 22:50:26 +03:00
strtok -> strtok_r
(This used to be commit fd34ce437057bb34cdc37f4b066e424000d36789)
This commit is contained in:
parent
2051243132
commit
587cf54c61
@ -1463,6 +1463,7 @@ static int cmd_mkdir(void)
|
||||
struct cli_state *targetcli;
|
||||
char *targetname = NULL;
|
||||
char *p = NULL;
|
||||
char *saveptr;
|
||||
|
||||
ddir2 = talloc_strdup(ctx, "");
|
||||
if (!ddir2) {
|
||||
@ -1478,7 +1479,7 @@ static int cmd_mkdir(void)
|
||||
return 1;
|
||||
}
|
||||
trim_char(ddir,'.','\0');
|
||||
p = strtok(ddir,"/\\");
|
||||
p = strtok_r(ddir, "/\\", &saveptr);
|
||||
while (p) {
|
||||
ddir2 = talloc_asprintf_append(ddir2, p);
|
||||
if (!ddir2) {
|
||||
@ -1491,7 +1492,7 @@ static int cmd_mkdir(void)
|
||||
if (!ddir2) {
|
||||
return 1;
|
||||
}
|
||||
p = strtok(NULL,"/\\");
|
||||
p = strtok_r(NULL, "/\\", &saveptr);
|
||||
}
|
||||
} else {
|
||||
do_mkdir(mask);
|
||||
|
@ -513,6 +513,7 @@ static bool ensurepath(const char *fname)
|
||||
char *partpath, *ffname;
|
||||
const char *p=fname;
|
||||
char *basehack;
|
||||
char *saveptr;
|
||||
|
||||
DEBUG(5, ( "Ensurepath called with: %s\n", fname));
|
||||
|
||||
@ -528,7 +529,7 @@ static bool ensurepath(const char *fname)
|
||||
|
||||
*partpath = 0;
|
||||
|
||||
/* fname copied to ffname so can strtok */
|
||||
/* fname copied to ffname so can strtok_r */
|
||||
|
||||
safe_strcpy(ffname, fname, strlen(fname));
|
||||
|
||||
@ -541,7 +542,7 @@ static bool ensurepath(const char *fname)
|
||||
*basehack='\0';
|
||||
}
|
||||
|
||||
p=strtok(ffname, "\\");
|
||||
p=strtok_r(ffname, "\\", &saveptr);
|
||||
|
||||
while (p) {
|
||||
safe_strcat(partpath, p, strlen(fname) + 1);
|
||||
@ -558,7 +559,7 @@ static bool ensurepath(const char *fname)
|
||||
}
|
||||
|
||||
safe_strcat(partpath, "\\", strlen(fname) + 1);
|
||||
p = strtok(NULL,"/\\");
|
||||
p = strtok_r(NULL, "/\\", &saveptr);
|
||||
}
|
||||
|
||||
SAFE_FREE(partpath);
|
||||
|
@ -162,6 +162,7 @@ do_mount(char *share_name, unsigned int flags, struct smb_mount_data *data)
|
||||
char *release, *major, *minor;
|
||||
char *data1, *data2;
|
||||
int ret;
|
||||
char *saveptr;
|
||||
|
||||
if (asprintf(&opts,
|
||||
"version=7,uid=%d,gid=%d,file_mode=0%o,dir_mode=0%o,%s",
|
||||
@ -172,8 +173,8 @@ do_mount(char *share_name, unsigned int flags, struct smb_mount_data *data)
|
||||
|
||||
uname(&uts);
|
||||
release = uts.release;
|
||||
major = strtok(release, ".");
|
||||
minor = strtok(NULL, ".");
|
||||
major = strtok_r(release, ".", &saveptr);
|
||||
minor = strtok_r(NULL, ".", &saveptr);
|
||||
if (major && minor && atoi(major) == 2 && atoi(minor) < 4) {
|
||||
/* < 2.4, assume struct */
|
||||
data1 = (char *) data;
|
||||
|
@ -764,6 +764,7 @@ static void parse_mount_smb(int argc, char **argv)
|
||||
char *opts;
|
||||
char *opteq;
|
||||
int val;
|
||||
char *saveptr;
|
||||
TALLOC_CTX *ctx = talloc_tos();
|
||||
|
||||
/* FIXME: This function can silently fail if the arguments are
|
||||
@ -813,7 +814,8 @@ static void parse_mount_smb(int argc, char **argv)
|
||||
/*
|
||||
* option parsing from nfsmount.c (util-linux-2.9u)
|
||||
*/
|
||||
for (opts = strtok(optarg, ","); opts; opts = strtok(NULL, ",")) {
|
||||
for (opts = strtok_r(optarg, ",", &saveptr); opts;
|
||||
opts = strtok_r(NULL, ",", &saveptr)) {
|
||||
DEBUG(3, ("opts: %s\n", opts));
|
||||
if ((opteq = strchr_m(opts, '='))) {
|
||||
val = atoi(opteq + 1);
|
||||
|
@ -53,20 +53,21 @@ static bool afs_decode_token(const char *string, char **cell,
|
||||
{
|
||||
DATA_BLOB blob;
|
||||
struct ClearToken result_ct;
|
||||
char *saveptr;
|
||||
|
||||
char *s = SMB_STRDUP(string);
|
||||
|
||||
char *t;
|
||||
|
||||
if ((t = strtok(s, "\n")) == NULL) {
|
||||
DEBUG(10, ("strtok failed\n"));
|
||||
if ((t = strtok_r(s, "\n", &saveptr)) == NULL) {
|
||||
DEBUG(10, ("strtok_r failed\n"));
|
||||
return False;
|
||||
}
|
||||
|
||||
*cell = SMB_STRDUP(t);
|
||||
|
||||
if ((t = strtok(NULL, "\n")) == NULL) {
|
||||
DEBUG(10, ("strtok failed\n"));
|
||||
if ((t = strtok_r(NULL, "\n", &saveptr)) == NULL) {
|
||||
DEBUG(10, ("strtok_r failed\n"));
|
||||
return False;
|
||||
}
|
||||
|
||||
@ -75,8 +76,8 @@ static bool afs_decode_token(const char *string, char **cell,
|
||||
return False;
|
||||
}
|
||||
|
||||
if ((t = strtok(NULL, "\n")) == NULL) {
|
||||
DEBUG(10, ("strtok failed\n"));
|
||||
if ((t = strtok_r(NULL, "\n", &saveptr)) == NULL) {
|
||||
DEBUG(10, ("strtok_r failed\n"));
|
||||
return False;
|
||||
}
|
||||
|
||||
@ -93,8 +94,8 @@ static bool afs_decode_token(const char *string, char **cell,
|
||||
|
||||
data_blob_free(&blob);
|
||||
|
||||
if ((t = strtok(NULL, "\n")) == NULL) {
|
||||
DEBUG(10, ("strtok failed\n"));
|
||||
if ((t = strtok_r(NULL, "\n", &saveptr)) == NULL) {
|
||||
DEBUG(10, ("strtok_r failed\n"));
|
||||
return False;
|
||||
}
|
||||
|
||||
@ -103,8 +104,8 @@ static bool afs_decode_token(const char *string, char **cell,
|
||||
return False;
|
||||
}
|
||||
|
||||
if ((t = strtok(NULL, "\n")) == NULL) {
|
||||
DEBUG(10, ("strtok failed\n"));
|
||||
if ((t = strtok_r(NULL, "\n", &saveptr)) == NULL) {
|
||||
DEBUG(10, ("strtok_r failed\n"));
|
||||
return False;
|
||||
}
|
||||
|
||||
@ -113,8 +114,8 @@ static bool afs_decode_token(const char *string, char **cell,
|
||||
return False;
|
||||
}
|
||||
|
||||
if ((t = strtok(NULL, "\n")) == NULL) {
|
||||
DEBUG(10, ("strtok failed\n"));
|
||||
if ((t = strtok_r(NULL, "\n", &saveptr)) == NULL) {
|
||||
DEBUG(10, ("strtok_r failed\n"));
|
||||
return False;
|
||||
}
|
||||
|
||||
@ -123,8 +124,8 @@ static bool afs_decode_token(const char *string, char **cell,
|
||||
return False;
|
||||
}
|
||||
|
||||
if ((t = strtok(NULL, "\n")) == NULL) {
|
||||
DEBUG(10, ("strtok failed\n"));
|
||||
if ((t = strtok_r(NULL, "\n", &saveptr)) == NULL) {
|
||||
DEBUG(10, ("strtok_r failed\n"));
|
||||
return False;
|
||||
}
|
||||
|
||||
|
@ -429,8 +429,9 @@ static bool debug_parse_params(char **params)
|
||||
|
||||
/* Fill in new debug class levels */
|
||||
for (; i < debug_num_classes && params[i]; i++) {
|
||||
if ((class_name=strtok(params[i],":")) &&
|
||||
(class_level=strtok(NULL, "\0")) &&
|
||||
char *saveptr;
|
||||
if ((class_name = strtok_r(params[i],":", &saveptr)) &&
|
||||
(class_level = strtok_r(NULL, "\0", &saveptr)) &&
|
||||
((ndx = debug_lookup_classname(class_name)) != -1)) {
|
||||
DEBUGLEVEL_CLASS[ndx] = atoi(class_level);
|
||||
DEBUGLEVEL_CLASS_ISSET[ndx] = True;
|
||||
|
@ -29,7 +29,8 @@ char *ads_build_path(const char *realm, const char *sep, const char *field, int
|
||||
int numbits = 0;
|
||||
char *ret;
|
||||
int len;
|
||||
|
||||
char *saveptr;
|
||||
|
||||
r = SMB_STRDUP(realm);
|
||||
|
||||
if (!r || !*r) {
|
||||
@ -51,11 +52,11 @@ char *ads_build_path(const char *realm, const char *sep, const char *field, int
|
||||
}
|
||||
|
||||
strlcpy(ret,field, len);
|
||||
p=strtok(r,sep);
|
||||
p=strtok_r(r, sep, &saveptr);
|
||||
if (p) {
|
||||
strlcat(ret, p, len);
|
||||
|
||||
while ((p=strtok(NULL,sep))) {
|
||||
while ((p=strtok_r(NULL, sep, &saveptr)) != NULL) {
|
||||
char *s;
|
||||
if (reverse)
|
||||
asprintf(&s, "%s%s,%s", field, p, ret);
|
||||
|
@ -269,6 +269,7 @@ static bool recycle_create_dir(vfs_handle_struct *handle, const char *dname)
|
||||
char *token;
|
||||
char *tok_str;
|
||||
bool ret = False;
|
||||
char *saveptr;
|
||||
|
||||
mode = recycle_directory_mode(handle);
|
||||
|
||||
@ -286,7 +287,8 @@ static bool recycle_create_dir(vfs_handle_struct *handle, const char *dname)
|
||||
}
|
||||
|
||||
/* Create directory tree if neccessary */
|
||||
for(token = strtok(tok_str, "/"); token; token = strtok(NULL, "/")) {
|
||||
for(token = strtok_r(tok_str, "/", &saveptr); token;
|
||||
token = strtok_r(NULL, "/", &saveptr)) {
|
||||
safe_strcat(new_dir, token, len);
|
||||
if (recycle_directory_exist(handle, new_dir))
|
||||
DEBUG(10, ("recycle: dir %s already exists\n", new_dir));
|
||||
|
@ -399,6 +399,7 @@ reporting %s domain %s 0x%x ntversion=%x lm_nt token=%x lm_20 token=%x\n",
|
||||
char *component, *dc, *q1;
|
||||
char *q_orig = q;
|
||||
int str_offset;
|
||||
char *saveptr;
|
||||
|
||||
domain = get_mydnsdomname(talloc_tos());
|
||||
if (!domain) {
|
||||
@ -444,7 +445,7 @@ reporting %s domain %s 0x%x ntversion=%x lm_nt token=%x lm_20 token=%x\n",
|
||||
str_offset = q - q_orig;
|
||||
dc = domain;
|
||||
q1 = q;
|
||||
while ((component = strtok(dc, "."))) {
|
||||
while ((component = strtok_r(dc, ".", &saveptr)) != NULL) {
|
||||
dc = NULL;
|
||||
if (sizeof(outbuf) - PTR_DIFF(q, outbuf) < 1) {
|
||||
return;
|
||||
|
@ -4709,6 +4709,7 @@ static void lp_add_auto_services(char *str)
|
||||
char *s;
|
||||
char *p;
|
||||
int homes;
|
||||
char *saveptr;
|
||||
|
||||
if (!str)
|
||||
return;
|
||||
@ -4719,7 +4720,8 @@ static void lp_add_auto_services(char *str)
|
||||
|
||||
homes = lp_servicenumber(HOMES_NAME);
|
||||
|
||||
for (p = strtok(s, LIST_SEP); p; p = strtok(NULL, LIST_SEP)) {
|
||||
for (p = strtok_r(s, LIST_SEP, &saveptr); p;
|
||||
p = strtok_r(NULL, LIST_SEP, &saveptr)) {
|
||||
char *home;
|
||||
|
||||
if (lp_servicenumber(p) >= 0)
|
||||
|
@ -28,6 +28,7 @@ static void add_auto_printers(void)
|
||||
const char *p;
|
||||
int pnum = lp_servicenumber(PRINTERS_NAME);
|
||||
char *str;
|
||||
char *saveptr;
|
||||
|
||||
if (pnum < 0)
|
||||
return;
|
||||
@ -35,7 +36,8 @@ static void add_auto_printers(void)
|
||||
if ((str = SMB_STRDUP(lp_auto_services())) == NULL)
|
||||
return;
|
||||
|
||||
for (p = strtok(str, LIST_SEP); p; p = strtok(NULL, LIST_SEP)) {
|
||||
for (p = strtok_r(str, LIST_SEP, &saveptr); p;
|
||||
p = strtok_r(NULL, LIST_SEP, &saveptr)) {
|
||||
if (lp_servicenumber(p) >= 0)
|
||||
continue;
|
||||
|
||||
|
@ -127,6 +127,7 @@ static bool parse_lpq_bsd(char *line,print_queue_struct *buf,bool first)
|
||||
int count = 0;
|
||||
TALLOC_CTX *ctx = talloc_tos();
|
||||
char *line2 = NULL;
|
||||
char *saveptr;
|
||||
|
||||
line2 = talloc_strdup(ctx, line);
|
||||
if (!line2) {
|
||||
@ -144,10 +145,11 @@ static bool parse_lpq_bsd(char *line,print_queue_struct *buf,bool first)
|
||||
#endif /* OSF1 */
|
||||
|
||||
/* FIXME: Use next_token_talloc rather than strtok! */
|
||||
tok[0] = strtok(line2," \t");
|
||||
tok[0] = strtok_r(line2," \t", &saveptr);
|
||||
count++;
|
||||
|
||||
while ((count < MAXTOK) && ((tok[count] = strtok(NULL," \t")) != NULL)) {
|
||||
while ((count < MAXTOK)
|
||||
&& ((tok[count] = strtok_r(NULL, " \t", &saveptr)) != NULL)) {
|
||||
count++;
|
||||
}
|
||||
|
||||
|
@ -59,8 +59,9 @@ bool aix_cache_reload(void)
|
||||
continue;
|
||||
|
||||
if ((p = strchr_m(line, ':'))) {
|
||||
char *saveptr;
|
||||
*p = '\0';
|
||||
p = strtok(line, ":");
|
||||
p = strtok_r(line, ":", &saveptr);
|
||||
if (strcmp(p, "bsh") != 0) {
|
||||
name = talloc_strdup(ctx, p);
|
||||
if (!name) {
|
||||
|
@ -1222,9 +1222,10 @@ void set_drv_info_3_env (DRIVER_INFO_3 *info, const char *arch)
|
||||
static char* get_driver_3_param (char* str, const char* delim, UNISTR* dest)
|
||||
{
|
||||
char *ptr;
|
||||
char *saveptr;
|
||||
|
||||
/* get the next token */
|
||||
ptr = strtok(str, delim);
|
||||
ptr = strtok_r(str, delim, &saveptr);
|
||||
|
||||
/* a string of 'NULL' is used to represent an empty
|
||||
parameter because two consecutive delimiters
|
||||
@ -1251,7 +1252,8 @@ static bool init_drv_info_3_members ( TALLOC_CTX *mem_ctx, DRIVER_INFO_3 *info,
|
||||
{
|
||||
char *str, *str2;
|
||||
uint32 len, i;
|
||||
|
||||
char *saveptr;
|
||||
|
||||
/* fill in the UNISTR fields */
|
||||
str = get_driver_3_param (args, ":", &info->name);
|
||||
str = get_driver_3_param (NULL, ":", &info->driverpath);
|
||||
@ -1266,13 +1268,13 @@ static bool init_drv_info_3_members ( TALLOC_CTX *mem_ctx, DRIVER_INFO_3 *info,
|
||||
str = str2;
|
||||
|
||||
/* begin to strip out each filename */
|
||||
str = strtok(str, ",");
|
||||
str = strtok_r(str, ",", &saveptr);
|
||||
len = 0;
|
||||
while (str != NULL)
|
||||
{
|
||||
/* keep a cumlative count of the str lengths */
|
||||
len += strlen(str)+1;
|
||||
str = strtok(NULL, ",");
|
||||
str = strtok_r(NULL, ",", &saveptr);
|
||||
}
|
||||
|
||||
/* allocate the space; add one extra slot for a terminating NULL.
|
||||
|
@ -288,12 +288,13 @@ static bool parse_msdfs_symlink(TALLOC_CTX *ctx,
|
||||
char **alt_path = NULL;
|
||||
int count = 0, i;
|
||||
struct referral *reflist;
|
||||
char *saveptr;
|
||||
|
||||
temp = talloc_strdup(ctx, target);
|
||||
if (!temp) {
|
||||
return False;
|
||||
}
|
||||
prot = strtok(temp,":");
|
||||
prot = strtok_r(temp, ":", &saveptr);
|
||||
if (!prot) {
|
||||
DEBUG(0,("parse_msdfs_symlink: invalid path !\n"));
|
||||
return False;
|
||||
@ -306,7 +307,7 @@ static bool parse_msdfs_symlink(TALLOC_CTX *ctx,
|
||||
|
||||
/* parse out the alternate paths */
|
||||
while((count<MAX_REFERRAL_COUNT) &&
|
||||
((alt_path[count] = strtok(NULL,",")) != NULL)) {
|
||||
((alt_path[count] = strtok_r(NULL, ",", &saveptr)) != NULL)) {
|
||||
count++;
|
||||
}
|
||||
|
||||
|
@ -759,6 +759,7 @@ bool authorise_login(int snum, fstring user, DATA_BLOB password,
|
||||
if (!ok) {
|
||||
char *auser;
|
||||
char *user_list = NULL;
|
||||
char *saveptr;
|
||||
|
||||
if ( session_userlist )
|
||||
user_list = SMB_STRDUP(session_userlist);
|
||||
@ -768,8 +769,9 @@ bool authorise_login(int snum, fstring user, DATA_BLOB password,
|
||||
if (!user_list)
|
||||
return(False);
|
||||
|
||||
for (auser=strtok(user_list,LIST_SEP); !ok && auser;
|
||||
auser = strtok(NULL,LIST_SEP)) {
|
||||
for (auser = strtok_r(user_list, LIST_SEP, &saveptr);
|
||||
!ok && auser;
|
||||
auser = strtok_r(NULL, LIST_SEP, &saveptr)) {
|
||||
fstring user2;
|
||||
fstrcpy(user2,auser);
|
||||
if (!user_ok(user2,snum))
|
||||
@ -792,6 +794,7 @@ bool authorise_login(int snum, fstring user, DATA_BLOB password,
|
||||
TALLOC_CTX *ctx = talloc_tos();
|
||||
char *auser;
|
||||
char *user_list = talloc_strdup(ctx, lp_username(snum));
|
||||
char *saveptr;
|
||||
|
||||
if (!user_list) {
|
||||
goto check_guest;
|
||||
@ -806,8 +809,9 @@ bool authorise_login(int snum, fstring user, DATA_BLOB password,
|
||||
goto check_guest;
|
||||
}
|
||||
|
||||
for (auser=strtok(user_list,LIST_SEP); auser && !ok;
|
||||
auser = strtok(NULL,LIST_SEP)) {
|
||||
for (auser = strtok_r(user_list, LIST_SEP, &saveptr);
|
||||
auser && !ok;
|
||||
auser = strtok_r(NULL, LIST_SEP, &saveptr)) {
|
||||
if (*auser == '@') {
|
||||
auser = validate_group(auser+1,password,snum);
|
||||
if (auser) {
|
||||
|
@ -890,6 +890,7 @@ static bool run_netbench(int client)
|
||||
}
|
||||
|
||||
while (fgets(line, sizeof(line)-1, f)) {
|
||||
char *saveptr;
|
||||
line_count++;
|
||||
|
||||
line[strlen(line)-1] = 0;
|
||||
@ -899,9 +900,9 @@ static bool run_netbench(int client)
|
||||
all_string_sub(line,"client1", cname, sizeof(line));
|
||||
|
||||
/* parse the command parameters */
|
||||
params[0] = strtok(line," ");
|
||||
params[0] = strtok_r(line, " ", &saveptr);
|
||||
i = 0;
|
||||
while (params[i]) params[++i] = strtok(NULL," ");
|
||||
while (params[i]) params[++i] = strtok_r(NULL, " ", &saveptr);
|
||||
|
||||
params[i] = "";
|
||||
|
||||
|
@ -164,7 +164,9 @@ void cgi_load_variables(void)
|
||||
open("/dev/null", O_RDWR);
|
||||
|
||||
if ((s=query_string) || (s=getenv("QUERY_STRING"))) {
|
||||
for (tok=strtok(s,"&;");tok;tok=strtok(NULL,"&;")) {
|
||||
char *saveptr;
|
||||
for (tok=strtok_r(s, "&;", &saveptr); tok;
|
||||
tok=strtok_r(NULL, "&;", &saveptr)) {
|
||||
p = strchr_m(tok,'=');
|
||||
if (!p) continue;
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user