The usual !pstring...
authorJeremy Allison <jra@samba.org>
Wed, 5 Dec 2007 00:56:18 +0000 (16:56 -0800)
committerJeremy Allison <jra@samba.org>
Wed, 5 Dec 2007 00:56:18 +0000 (16:56 -0800)
Jeremy.

source/torture/locktest.c
source/torture/locktest2.c
source/torture/vfstest.c
source/utils/eventlogadm.c
source/utils/net_ads.c

index baf676f6463448fab6bce922817b2feff3afaad7..4dc8e5357875a9e497fccfd4d50f68e1e7ac315d 100644 (file)
@@ -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;
        }
index bdf9e51970b36267d2220afc061862ccc863bbae..45a957e3a4b7fb1f41429e566259ed5a6b1f8130 100644 (file)
@@ -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;
index daecf3c2d1dffa5ff75a58eae68d0e4ca1fd0762..5f673be6dfe145add50bd50dda35181956ffd65b 100644 (file)
@@ -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;
 }
index 5424eca496d99e4c63e9e7adb7453aeed2ed33e1..424cee8189474e44a429775118fb4765aaa218da 100644 (file)
@@ -85,7 +85,7 @@ static int DoWriteCommand( int argc, char **argv, bool debugflag, char *exename
        ELOG_TDB *etdb;
 
        /* fixed constants are bad bad bad  */
-       pstring linein;
+       char linein[1024];
        bool is_eor;
        Eventlog_entry ee;
        int rcnum;
index d54b817d155dd0934cb34e1a532d8637df0c9dab..37a02200f57ee3a1a7188eb42ad4a8136399f321 100644 (file)
@@ -1636,12 +1636,17 @@ int net_ads_join(int argc, const char **argv)
        }
 
        if ( createupn ) {
-               pstring upn;
+               char *upn;
 
                /* default to using the short UPN name */
-               if ( !machineupn ) {
-                       snprintf( upn, sizeof(upn), "host/%s@%s", global_myname(), 
-                               ads->config.realm );
+               if (!machineupn ) {
+                       upn = talloc_asprintf(ctx,
+                                       "host/%s@%s", global_myname(),
+                                       ads->config.realm );
+                       if (!upn) {
+                               nt_status = NT_STATUS_NO_MEMORY;
+                               goto fail;
+                       }
                        machineupn = upn;
                }