diff options
author | Kai Blin <kai@samba.org> | 2007-12-14 14:04:56 +0100 |
---|---|---|
committer | Stefan Metzmacher <metze@samba.org> | 2007-12-21 05:50:18 +0100 |
commit | 43ac3d9b44b98d44db9b1550c47e8f96a410d1e9 (patch) | |
tree | 9289d7b30bd6a0be28b4935a7314da0373e4b47c /source4/lib | |
parent | d8feba9faf8f135109e347b5bf5fa054df97a11a (diff) | |
download | samba-43ac3d9b44b98d44db9b1550c47e8f96a410d1e9.tar.gz samba-43ac3d9b44b98d44db9b1550c47e8f96a410d1e9.tar.bz2 samba-43ac3d9b44b98d44db9b1550c47e8f96a410d1e9.zip |
r26453: Janitorial: Don't use a static char[] in smb_readline_replacement.
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)
Diffstat (limited to 'source4/lib')
-rw-r--r-- | source4/lib/registry/tools/regshell.c | 6 | ||||
-rw-r--r-- | source4/lib/smbreadline/smbreadline.c | 9 |
2 files changed, 12 insertions, 3 deletions
diff --git a/source4/lib/registry/tools/regshell.c b/source4/lib/registry/tools/regshell.c index 1c5157e937..329d6ab670 100644 --- a/source4/lib/registry/tools/regshell.c +++ b/source4/lib/registry/tools/regshell.c @@ -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); diff --git a/source4/lib/smbreadline/smbreadline.c b/source4/lib/smbreadline/smbreadline.c index e5cc3522e9..a85f335b8a 100644 --- a/source4/lib/smbreadline/smbreadline.c +++ b/source4/lib/smbreadline/smbreadline.c @@ -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) |