diff options
Diffstat (limited to 'source3/torture')
-rw-r--r-- | source3/torture/locktest.c | 10 | ||||
-rw-r--r-- | source3/torture/locktest2.c | 13 | ||||
-rw-r--r-- | source3/torture/vfstest.c | 80 |
3 files changed, 51 insertions, 52 deletions
diff --git a/source3/torture/locktest.c b/source3/torture/locktest.c index baf676f646..4dc8e53578 100644 --- a/source3/torture/locktest.c +++ b/source3/torture/locktest.c @@ -125,13 +125,15 @@ static void print_brl(struct file_id id, { #if NASTY_POSIX_LOCK_HACK { - pstring cmd; static SMB_INO_T lastino; if (lastino != ino) { - slprintf(cmd, sizeof(cmd), - "egrep POSIX.*%u /proc/locks", (int)ino); - system(cmd); + char *cmd; + if (asprintf(&cmd, + "egrep POSIX.*%u /proc/locks", (int)ino) > 0) { + system(cmd); + SAFE_FREE(cmd); + } } lastino = ino; } diff --git a/source3/torture/locktest2.c b/source3/torture/locktest2.c index bdf9e51970..45a957e3a4 100644 --- a/source3/torture/locktest2.c +++ b/source3/torture/locktest2.c @@ -64,16 +64,21 @@ static struct record *recorded; static int try_open(struct cli_state *c, char *nfs, int fstype, const char *fname, int flags) { - pstring path; + char *path; switch (fstype) { case FSTYPE_SMB: return cli_open(c, fname, flags, DENY_NONE); case FSTYPE_NFS: - slprintf(path, sizeof(path), "%s%s", nfs, fname); - pstring_sub(path,"\\", "/"); - return open(path, flags, 0666); + if (asprintf(&path, "%s%s", nfs, fname) > 0) { + int ret; + string_replace(path,'\\', '/'); + ret = open(path, flags, 0666); + SAFE_FREE(path); + return ret; + } + break; } return -1; diff --git a/source3/torture/vfstest.c b/source3/torture/vfstest.c index daecf3c2d1..5f673be6df 100644 --- a/source3/torture/vfstest.c +++ b/source3/torture/vfstest.c @@ -89,20 +89,20 @@ static char **completion_fn(const char *text, int start, int end) return matches; } -static char* next_command(char** cmdstr) +static char *next_command(TALLOC_CTX *ctx, char **cmdstr) { - static pstring command; - char *p; - + char *command; + char *p; + if (!cmdstr || !(*cmdstr)) return NULL; - + p = strchr_m(*cmdstr, ';'); if (p) *p = '\0'; - pstrcpy(command, *cmdstr); + command = talloc_strdup(ctx, *cmdstr); *cmdstr = p; - + return command; } @@ -266,24 +266,22 @@ static NTSTATUS do_cmd(struct vfs_state *vfs, struct cmd_set *cmd_entry, char *c const char *p = cmd; char **argv = NULL; NTSTATUS result = NT_STATUS_UNSUCCESSFUL; - pstring buf; - TALLOC_CTX *mem_ctx = NULL; + char *buf; + TALLOC_CTX *mem_ctx = talloc_stackframe(); int argc = 0, i; /* Count number of arguments first time through the loop then allocate memory and strdup them. */ again: - while(next_token(&p, buf, " ", sizeof(buf))) { + while(next_token_talloc(mem_ctx, &p, &buf, " ")) { if (argv) { argv[argc] = SMB_STRDUP(buf); } - argc++; } - - if (!argv) { + if (!argv) { /* Create argument list */ argv = SMB_MALLOC_ARRAY(char *, argc); @@ -294,44 +292,35 @@ static NTSTATUS do_cmd(struct vfs_state *vfs, struct cmd_set *cmd_entry, char *c result = NT_STATUS_NO_MEMORY; goto done; } - + p = cmd; argc = 0; - + goto again; } /* Call the function */ if (cmd_entry->fn) { - - if (mem_ctx == NULL) { - /* Create mem_ctx */ - if (!(mem_ctx = talloc_init("do_cmd"))) { - DEBUG(0, ("talloc_init() failed\n")); - goto done; - } - } - /* Run command */ result = cmd_entry->fn(vfs, mem_ctx, argc, (const char **)argv); - } else { fprintf (stderr, "Invalid command\n"); goto done; } done: - + /* Cleanup */ if (argv) { for (i = 0; i < argc; i++) SAFE_FREE(argv[i]); - + SAFE_FREE(argv); } - + + TALLOC_FREE(mem_ctx); return result; } @@ -340,19 +329,21 @@ static NTSTATUS process_cmd(struct vfs_state *vfs, char *cmd) { struct cmd_list *temp_list; bool found = False; - pstring buf; + char *buf; const char *p = cmd; NTSTATUS result = NT_STATUS_OK; + TALLOC_CTX *mem_ctx = talloc_stackframe(); int len = 0; if (cmd[strlen(cmd) - 1] == '\n') cmd[strlen(cmd) - 1] = '\0'; - if (!next_token(&p, buf, " ", sizeof(buf))) { + if (!next_token_talloc(mem_ctx, &p, &buf, " ")) { + TALLOC_FREE(mem_ctx); return NT_STATUS_OK; } - /* strip the trainly \n if it exsists */ + /* Strip the trailing \n if it exists */ len = strlen(buf); if (buf[len-1] == '\n') buf[len-1] = '\0'; @@ -376,6 +367,7 @@ static NTSTATUS process_cmd(struct vfs_state *vfs, char *cmd) done: if (!found && buf[0]) { printf("command not found: %s\n", buf); + TALLOC_FREE(mem_ctx); return NT_STATUS_OK; } @@ -383,6 +375,7 @@ static NTSTATUS process_cmd(struct vfs_state *vfs, char *cmd) printf("result was %s\n", nt_errstr(result)); } + TALLOC_FREE(mem_ctx); return result; } @@ -437,13 +430,12 @@ void reload_printers(void) bool reload_services(bool test) { bool ret; - + if (lp_loaded()) { - pstring fname; - pstrcpy(fname,lp_configfile()); + const char *fname = lp_configfile(); if (file_exist(fname, NULL) && !strcsequal(fname, dyn_CONFIGFILE)) { - pstrcpy(dyn_CONFIGFILE, fname); + strlcpy(dyn_CONFIGFILE, fname, sizeof(dyn_CONFIGFILE)); test = False; } } @@ -454,7 +446,7 @@ bool reload_services(bool test) return(True); lp_killunused(conn_snum_used); - + ret = lp_load(dyn_CONFIGFILE, False, False, True, True); /* perhaps the config filename is now set */ @@ -512,6 +504,7 @@ int main(int argc, char *argv[]) static struct vfs_state vfs; int i; static char *filename = NULL; + TALLOC_CTX *frame = talloc_stackframe(); /* make sure the vars that get altered (4th field) are in a fixed location or certain compilers complain */ @@ -574,23 +567,21 @@ int main(int argc, char *argv[]) if (cmdstr && cmdstr[0]) { char *cmd; char *p = cmdstr; - - while((cmd=next_command(&p)) != NULL) { + + while((cmd=next_command(frame, &p)) != NULL) { process_cmd(&vfs, cmd); } - + + TALLOC_FREE(cmd); return 0; } /* Loop around accepting commands */ while(1) { - pstring prompt; char *line; - slprintf(prompt, sizeof(prompt) - 1, "vfstest $> "); - - line = smb_readline(prompt, NULL, completion_fn); + line = smb_readline("vfstest $> ", NULL, completion_fn); if (line == NULL) break; @@ -598,7 +589,8 @@ int main(int argc, char *argv[]) if (line[0] != '\n') process_cmd(&vfs, line); } - + conn_free(vfs.conn); + TALLOC_FREE(frame); return 0; } |