r26453: Janitorial: Don't use a static char[] in smb_readline_replacement.
authorKai Blin <kai@samba.org>
Fri, 14 Dec 2007 13:04:56 +0000 (14:04 +0100)
committerStefan Metzmacher <metze@samba.org>
Fri, 21 Dec 2007 04:50:18 +0000 (05:50 +0100)
Fix up callers to free the memory returned, as that is needed if we use the
original readline function as well.
(This used to be commit c81ead1c38f417d442157b21d0d389f6a540c6f9)

source4/client/client.c
source4/lib/registry/tools/regshell.c
source4/lib/smbreadline/smbreadline.c
source4/torture/rpc/samr.c
source4/torture/smbtorture.c

index 748ee2d7cbe25d618a0830e6ee9918fbd4758b9f..65bcfeefb6ebce35faccc5b50920f13c7c7eb80e 100644 (file)
@@ -2997,16 +2997,18 @@ static int process_stdin(struct smbclient_context *ctx)
                char *the_prompt = talloc_asprintf(ctx, "smb: %s> ", ctx->remote_cur_dir);
                char *cline = smb_readline(the_prompt, readline_callback, completion_fn);
                talloc_free(the_prompt);
-                       
+
                if (!cline) break;
-               
+
                /* special case - first char is ! */
                if (*cline == '!') {
                        system(cline + 1);
                        continue;
                }
 
-               rc |= process_command_string(ctx, cline); 
+               rc |= process_command_string(ctx, cline);
+               free(cline);
+
        }
 
        return rc;
index 1c5157e93797aa8086275d05f849b2a312e6b364..329d6ab6701fce208cd849d831fae5f73927768e 100644 (file)
@@ -546,12 +546,16 @@ int main(int argc, char **argv)
                                                           via readline :-( */
                line = smb_readline(prompt, NULL, reg_completion);
 
-               if (line == NULL)
+               if (line == NULL) {
+                       free(prompt);
                        break;
+               }
 
                if (line[0] != '\n') {
                        ret = W_ERROR_IS_OK(process_cmd(ctx, line));
                }
+               free(line);
+               free(prompt);
        }
        talloc_free(ctx);
 
index e5cc3522e975a32f7996604778392dac2a091770..a85f335b8a345a385276cc0230a8abe2185d7f8d 100644 (file)
@@ -77,13 +77,18 @@ static char *smb_readline_replacement(const char *prompt, void (*callback)(void)
                                      char **(completion_fn)(const char *text, int start, int end))
 {
        fd_set fds;
-       static char line[1024];
+       char *line;
        struct timeval timeout;
        int fd = STDIN_FILENO;
        char *ret;
 
        do_debug("%s", prompt);
 
+       line = (char *)malloc(BUFSIZ);
+       if (!line) {
+               return NULL;
+       }
+
        while (1) {
                timeout.tv_sec = 5;
                timeout.tv_usec = 0;
@@ -92,7 +97,7 @@ static char *smb_readline_replacement(const char *prompt, void (*callback)(void)
                FD_SET(fd,&fds);
 
                if (sys_select_intr(fd+1,&fds,NULL,NULL,&timeout) == 1) {
-                       ret = x_fgets(line, sizeof(line), x_stdin);
+                       ret = x_fgets(line, BUFSIZ, x_stdin);
                        return ret;
                }
                if (callback)
index f8d5b7030cbf6ffffce9f27b1d145d2fe2e9ee8f..9d6c73891b883e53b1f506c3b60ab5c6c524635e 100644 (file)
@@ -824,6 +824,7 @@ static bool test_SetAliasInfo(struct dcerpc_pipe *p, struct torture_context *tct
                    case ALIASINFONAME: init_lsa_String(&r.in.info->name,TEST_ALIASNAME); break;
                    case ALIASINFODESCRIPTION: init_lsa_String(&r.in.info->description,
                                "Test Description, should test I18N as well"); break;
+                   case ALIASINFOALL: printf("ALIASINFOALL ignored\n"); break;
                }
 
                status = dcerpc_samr_SetAliasInfo(p, tctx, &r);
index 6d97e9ad9d67d31011bf9950cf79a8448977f251..371ddc729771d9e884de7a8666c0bf6cb0cb98b7 100644 (file)
@@ -500,6 +500,7 @@ void run_shell(struct torture_context *tctx)
                                run_test(tctx, argv[1]);
                        }
                }
+               free(cline);
        }
 }