diff options
author | Andrew Tridgell <tridge@samba.org> | 2001-06-21 09:10:42 +0000 |
---|---|---|
committer | Andrew Tridgell <tridge@samba.org> | 2001-06-21 09:10:42 +0000 |
commit | 91b8a8d1d21b810b6aca44ce647837669efd6dcf (patch) | |
tree | 2490cec37a9ae7f9f9ad9adabac033b41e26c07b /source3/rpcclient | |
parent | 4ff011d88ef5b79b92d2cea1abe32c93bc03f724 (diff) | |
download | samba-91b8a8d1d21b810b6aca44ce647837669efd6dcf.tar.gz samba-91b8a8d1d21b810b6aca44ce647837669efd6dcf.tar.bz2 samba-91b8a8d1d21b810b6aca44ce647837669efd6dcf.zip |
next_token() was supposed to be a reentrant replacement for strtok(),
but the code suffered from bitrot and is not now reentrant. That means
we can get bizarre behaviour
i've fixed this by making next_token() reentrant and creating a
next_token_nr() that is a small non-reentrant wrapper for those lumps
of code (mostly smbclient) that have come to rely on the non-reentrant
behaviour
(This used to be commit 674ee2f1d12b0afc164a9e9072758fd1c5e54df7)
Diffstat (limited to 'source3/rpcclient')
-rw-r--r-- | source3/rpcclient/cmd_reg.c | 22 | ||||
-rw-r--r-- | source3/rpcclient/cmd_wkssvc.c | 2 | ||||
-rw-r--r-- | source3/rpcclient/rpcclient.c | 8 |
3 files changed, 16 insertions, 16 deletions
diff --git a/source3/rpcclient/cmd_reg.c b/source3/rpcclient/cmd_reg.c index 89b53c823f..9aac99c928 100644 --- a/source3/rpcclient/cmd_reg.c +++ b/source3/rpcclient/cmd_reg.c @@ -91,7 +91,7 @@ void cmd_reg_enum(struct client_info *info) DEBUG(5, ("cmd_reg_enum: smb_cli->fd:%d\n", smb_cli->fd)); - if (!next_token(NULL, full_keyname, NULL, sizeof(full_keyname))) + if (!next_token_nr(NULL, full_keyname, NULL, sizeof(full_keyname))) { fprintf(out_hnd, "regenum <key_name>\n"); return; @@ -250,7 +250,7 @@ void cmd_reg_query_key(struct client_info *info) DEBUG(5, ("cmd_reg_enum: smb_cli->fd:%d\n", smb_cli->fd)); - if (!next_token(NULL, full_keyname, NULL, sizeof(full_keyname))) + if (!next_token_nr(NULL, full_keyname, NULL, sizeof(full_keyname))) { fprintf(out_hnd, "regquery key_name\n"); return; @@ -349,7 +349,7 @@ void cmd_reg_create_val(struct client_info *info) DEBUG(5, ("cmd_reg_create_val: smb_cli->fd:%d\n", smb_cli->fd)); - if (!next_token(NULL, full_keyname, NULL, sizeof(full_keyname))) + if (!next_token_nr(NULL, full_keyname, NULL, sizeof(full_keyname))) { fprintf(out_hnd, "regcreate <val_name> <val_type> <val>\n"); return; @@ -363,7 +363,7 @@ void cmd_reg_create_val(struct client_info *info) return; } - if (!next_token(NULL, tmp, NULL, sizeof(tmp))) + if (!next_token_nr(NULL, tmp, NULL, sizeof(tmp))) { fprintf(out_hnd, "regcreate <val_name> <val_type (1|4)> <val>\n"); return; @@ -377,7 +377,7 @@ void cmd_reg_create_val(struct client_info *info) return; } - if (!next_token(NULL, tmp, NULL, sizeof(tmp))) + if (!next_token_nr(NULL, tmp, NULL, sizeof(tmp))) { fprintf(out_hnd, "regcreate <val_name> <val_type (1|4)> <val>\n"); return; @@ -484,7 +484,7 @@ void cmd_reg_delete_val(struct client_info *info) DEBUG(5, ("cmd_reg_delete_val: smb_cli->fd:%d\n", smb_cli->fd)); - if (!next_token(NULL, full_keyname, NULL, sizeof(full_keyname))) + if (!next_token_nr(NULL, full_keyname, NULL, sizeof(full_keyname))) { fprintf(out_hnd, "regdelete <val_name>\n"); return; @@ -559,7 +559,7 @@ void cmd_reg_delete_key(struct client_info *info) DEBUG(5, ("cmd_reg_delete_key: smb_cli->fd:%d\n", smb_cli->fd)); - if (!next_token(NULL, full_keyname, NULL, sizeof(full_keyname))) + if (!next_token_nr(NULL, full_keyname, NULL, sizeof(full_keyname))) { fprintf(out_hnd, "regdeletekey <key_name>\n"); return; @@ -640,7 +640,7 @@ void cmd_reg_create_key(struct client_info *info) DEBUG(5, ("cmd_reg_create_key: smb_cli->fd:%d\n", smb_cli->fd)); - if (!next_token(NULL, full_keyname, NULL, sizeof(full_keyname))) + if (!next_token_nr(NULL, full_keyname, NULL, sizeof(full_keyname))) { fprintf(out_hnd, "regcreate <key_name> [key_class]\n"); return; @@ -654,7 +654,7 @@ void cmd_reg_create_key(struct client_info *info) return; } - if (!next_token(NULL, key_class, NULL, sizeof(key_class))) + if (!next_token_nr(NULL, key_class, NULL, sizeof(key_class))) { memset(key_class, 0, sizeof(key_class)); } @@ -735,7 +735,7 @@ void cmd_reg_test_key_sec(struct client_info *info) DEBUG(5, ("cmd_reg_get_key_sec: smb_cli->fd:%d\n", smb_cli->fd)); - if (!next_token(NULL, full_keyname, NULL, sizeof(full_keyname))) + if (!next_token_nr(NULL, full_keyname, NULL, sizeof(full_keyname))) { fprintf(out_hnd, "reggetsec <key_name>\n"); return; @@ -830,7 +830,7 @@ void cmd_reg_get_key_sec(struct client_info *info) DEBUG(5, ("cmd_reg_get_key_sec: smb_cli->fd:%d\n", smb_cli->fd)); - if (!next_token(NULL, full_keyname, NULL, sizeof(full_keyname))) + if (!next_token_nr(NULL, full_keyname, NULL, sizeof(full_keyname))) { fprintf(out_hnd, "reggetsec <key_name>\n"); return; diff --git a/source3/rpcclient/cmd_wkssvc.c b/source3/rpcclient/cmd_wkssvc.c index 1e64f384ae..69a3920c27 100644 --- a/source3/rpcclient/cmd_wkssvc.c +++ b/source3/rpcclient/cmd_wkssvc.c @@ -55,7 +55,7 @@ void cmd_wks_query_info(struct client_info *info) fstrcat(dest_wks, info->dest_host); strupper(dest_wks); - if (next_token(NULL, tmp, NULL, sizeof(tmp))) + if (next_token_nr(NULL, tmp, NULL, sizeof(tmp))) { info_level = (uint32)strtol(tmp, (char**)NULL, 10); } diff --git a/source3/rpcclient/rpcclient.c b/source3/rpcclient/rpcclient.c index 82e1ba03ba..e8029dec49 100644 --- a/source3/rpcclient/rpcclient.c +++ b/source3/rpcclient/rpcclient.c @@ -358,13 +358,13 @@ static uint32 do_cmd(struct cli_state *cli, struct cmd_set *cmd_entry, char *cmd pstring buf; int argc = 1, i; - next_token(&p, buf, " ", sizeof(buf)); + next_token_nr(&p, buf, " ", sizeof(buf)); /* Count number of arguments first time through the loop then allocate memory and strdup them. */ again: - while(next_token(NULL, buf, " ", sizeof(buf))) { + while(next_token_nr(NULL, buf, " ", sizeof(buf))) { if (argv) { argv[argc] = strdup(buf); } @@ -384,7 +384,7 @@ static uint32 do_cmd(struct cli_state *cli, struct cmd_set *cmd_entry, char *cmd } p = cmd; - next_token(&p, buf, " ", sizeof(buf)); + next_token_nr(&p, buf, " ", sizeof(buf)); argv[0] = strdup(buf); argc = 1; @@ -425,7 +425,7 @@ static uint32 process_cmd(struct cli_state *cli, char *cmd) if (cmd[strlen(cmd) - 1] == '\n') cmd[strlen(cmd) - 1] = '\0'; - if (!next_token(&p, buf, " ", sizeof(buf))) { + if (!next_token_nr(&p, buf, " ", sizeof(buf))) { return 0; } |