diff options
author | Nicholas Marriott <nicm@openbsd.org> | 2010-10-29 20:11:57 +0000 |
---|---|---|
committer | Nicholas Marriott <nicm@openbsd.org> | 2010-10-29 20:11:57 +0000 |
commit | 34d05ea7cdc168f3f40ee8f7c1f203a216f2dfdf (patch) | |
tree | 32c055e3a54ed70f4ac3dcbf9ba55d5d128752b9 /cmd.c | |
parent | 5de84eca3dbaa7b9fcc378a58198ced8a2d95a3e (diff) | |
download | rtmux-34d05ea7cdc168f3f40ee8f7c1f203a216f2dfdf.tar.gz rtmux-34d05ea7cdc168f3f40ee8f7c1f203a216f2dfdf.tar.bz2 rtmux-34d05ea7cdc168f3f40ee8f7c1f203a216f2dfdf.zip |
We now send argv to the server after parsing it in the client to get the
command, so the client should not modify it. Instead, take a copy. Fixes
parsing command lists, reported by mcbride@.
Diffstat (limited to 'cmd.c')
-rw-r--r-- | cmd.c | 16 |
1 files changed, 16 insertions, 0 deletions
@@ -166,6 +166,22 @@ cmd_unpack_argv(char *buf, size_t len, int argc, char ***argv) return (0); } +char ** +cmd_copy_argv(int argc, char **argv) +{ + char **new_argv; + int i; + + if (argc == 0) + return (NULL); + new_argv = xcalloc(argc, sizeof *new_argv); + for (i = 0; i < argc; i++) { + if (argv[i] != NULL) + new_argv[i] = xstrdup(argv[i]); + } + return (new_argv); +} + void cmd_free_argv(int argc, char **argv) { |