From 76649e674ed80f8cc29a45adf15493e96ae31dba Mon Sep 17 00:00:00 2001 From: Bill Currie Date: Mon, 28 Mar 2005 04:35:22 +0000 Subject: [PATCH] Fix a buffer overflow in Cmd_Alias_f caused by weird quoting. Not sure if the resulting alias will work as expected wrt id's command parsing, but that's another issue :) --- libs/util/cmd.c | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/libs/util/cmd.c b/libs/util/cmd.c index 8769d808e..927c74993 100644 --- a/libs/util/cmd.c +++ b/libs/util/cmd.c @@ -332,7 +332,7 @@ static void Cmd_Alias_f (void) { cmdalias_t *alias; - char *cmd; + dstring_t *cmd; int i, c; const char *s; @@ -371,17 +371,17 @@ Cmd_Alias_f (void) return; } // copy the rest of the command line - cmd = malloc (strlen (Cmd_Args (1)) + 2); // can never be longer - SYS_CHECKMEM (cmd); - cmd[0] = 0; // start out with a null string + puts (Cmd_Args(1)); + cmd = dstring_newstr (); c = Cmd_Argc (); for (i = 2; i < c; i++) { - strcat (cmd, Cmd_Argv (i)); + dstring_appendstr (cmd, Cmd_Argv (i)); if (i != c - 1) - strcat (cmd, " "); + dstring_appendstr (cmd, " "); } + puts (cmd->str); - alias->value = cmd; + alias->value = dstring_freeze (cmd); } static void