diff options
-rw-r--r-- | source3/lib/util_str.c | 10 | ||||
-rw-r--r-- | source3/torture/rpctorture.c | 74 |
2 files changed, 40 insertions, 44 deletions
diff --git a/source3/lib/util_str.c b/source3/lib/util_str.c index 7cd0f78439..01e81e48c3 100644 --- a/source3/lib/util_str.c +++ b/source3/lib/util_str.c @@ -2053,7 +2053,8 @@ static char **str_list_make_internal(TALLOC_CTX *mem_ctx, const char *str; char *s; int num, lsize; - pstring tok; + char *tok; + TALLOC_CTX *frame = NULL; if (!string || !*string) return NULL; @@ -2072,7 +2073,8 @@ static char **str_list_make_internal(TALLOC_CTX *mem_ctx, list = NULL; str = s; - while (next_token(&str, tok, sep, sizeof(tok))) { + frame = talloc_stackframe(); + while (next_token_talloc(frame, &str, &tok, sep)) { if (num == lsize) { lsize += S_LIST_ABS; if (mem_ctx) { @@ -2094,6 +2096,7 @@ static char **str_list_make_internal(TALLOC_CTX *mem_ctx, } else { SAFE_FREE(s); } + TALLOC_FREE(frame); return NULL; } else { list = rlist; @@ -2116,12 +2119,15 @@ static char **str_list_make_internal(TALLOC_CTX *mem_ctx, } else { SAFE_FREE(s); } + TALLOC_FREE(frame); return NULL; } num++; } + TALLOC_FREE(frame); + if (mem_ctx) { TALLOC_FREE(s); } else { diff --git a/source3/torture/rpctorture.c b/source3/torture/rpctorture.c index a9748ba905..d399ae8a0f 100644 --- a/source3/torture/rpctorture.c +++ b/source3/torture/rpctorture.c @@ -23,8 +23,6 @@ #define REGISTER 0 #endif -extern pstring global_myname; - extern file_info def_finfo; #define CNV_LANG(s) dos2unix_format(s,False) @@ -35,7 +33,7 @@ struct cli_state *smb_cli = &smbcli; FILE *out_hnd; -static pstring password; /* local copy only, if one is entered */ +static char *password; /* local copy only, if one is entered */ /**************************************************************************** initialise smb client structure @@ -85,7 +83,6 @@ static void rpcclient_stop(void) ****************************************************************************/ void run_enums_test(int num_ops, struct client_info *cli_info, struct cli_state *cli) { - pstring cmd; int i; /* establish connections. nothing to stop these being re-established. */ @@ -110,8 +107,7 @@ void run_enums_test(int num_ops, struct client_info *cli_info, struct cli_state if (password[0] != 0) { - slprintf(cmd, sizeof(cmd)-1, "1"); - set_first_token(cmd); + set_first_token("1"); } else { @@ -129,7 +125,6 @@ void run_enums_test(int num_ops, struct client_info *cli_info, struct cli_state ****************************************************************************/ void run_ntlogin_test(int num_ops, struct client_info *cli_info, struct cli_state *cli) { - pstring cmd; int i; /* establish connections. nothing to stop these being re-established. */ @@ -142,13 +137,15 @@ void run_ntlogin_test(int num_ops, struct client_info *cli_info, struct cli_stat cli_info->dest_host, cli_info->name_type); return; } - + for (i = 0; i < num_ops; i++) { - slprintf(cmd, sizeof(cmd)-1, "%s %s", cli->user_name, password); - set_first_token(cmd); - - cmd_netlogon_login_test(cli_info); + char *cmd; + if (asprintf(&cmd, "%s %s", cli->user_name, password) > 0) { + set_first_token(cmd); + cmd_netlogon_login_test(cli_info); + SAFE_FREE(cmd); + } } rpcclient_stop(); @@ -218,13 +215,12 @@ enum client_action int opt; extern char *optarg; extern int optind; - pstring term_code; bool got_pass = False; char *cmd_str=""; enum client_action cli_action = CLIENT_NONE; int nprocs = 1; int numops = 100; - pstring logfile; + char *logfile; TALLOC_CTX *frame = talloc_stackframe(); struct client_info cli_info; @@ -233,12 +229,6 @@ enum client_action rpcclient_init(); -#ifdef KANJI - pstrcpy(term_code, KANJI); -#else /* KANJI */ - *term_code = 0; -#endif /* KANJI */ - if (!lp_load(dyn_CONFIGFILE,True, False, False, True)) { fprintf(stderr, "Can't load %s - run testparm to debug it\n", dyn_CONFIGFILE); @@ -290,13 +280,11 @@ enum client_action setup_logging(pname, True); - global_myname = get_myname(global_myname); - if (!global_myname) { - fprintf(stderr, "Failed to get my hostname.\n"); + password = talloc_strdup(frame, ""); + if (!password) { + exit(1); } - password[0] = 0; - if (argc < 2) { usage(pname); @@ -332,8 +320,10 @@ enum client_action if (argc > 1 && (*argv[1] != '-')) { got_pass = True; - pstrcpy(password,argv[1]); - memset(argv[1],'X',strlen(argv[1])); + password = talloc_strdup(frame, argv[1]); + if (!password) { + exit(1); + } argc--; argv++; } @@ -382,9 +372,11 @@ enum client_action if ((lp=strchr_m(smb_cli->user_name,'%'))) { *lp = 0; - pstrcpy(password,lp+1); + password = talloc_strdup(frame, lp+1); + if (!password) { + exit(1); + } got_pass = True; - memset(strchr_m(optarg,'%')+1,'X',strlen(password)); } break; } @@ -425,7 +417,7 @@ enum client_action case 'n': { - fstrcpy(global_myname, optarg); + set_global_myname(optarg); break; } @@ -440,9 +432,10 @@ enum client_action case 'l': { - slprintf(logfile, sizeof(logfile)-1, - "%s.client",optarg); - lp_set_logfile(logfile); + if (asprintf(&logfile, "%s.client",optarg) > 0) { + lp_set_logfile(logfile); + SAFE_FREE(logfile); + } break; } @@ -466,12 +459,6 @@ enum client_action break; } - case 't': - { - pstrcpy(term_code, optarg); - break; - } - default: { usage(pname); @@ -487,8 +474,8 @@ enum client_action exit(1); } - strupper_m(global_myname); - fstrcpy(cli_info.myhostname, global_myname); + fstrcpy(cli_info.myhostname, global_myname()); + strupper_m(cli_info.myhostname); DEBUG(3,("%s client started (version %s)\n",current_timestring(False),SAMBA_VERSION_STRING)); @@ -525,7 +512,10 @@ enum client_action else { char *pwd = getpass("Enter Password:"); - safe_strcpy(password, pwd, sizeof(password)); + password = talloc_strdup(frame, pwd); + if (!password) { + exit(1); + } pwd_make_lm_nt_16(&(smb_cli->pwd), password); /* generate 16 byte hashes */ } |