// maximum number of parameters to a command
#define MAX_ARGS 80
// maximum tokenizable commandline length (counting NUL terminations)
-#define CMD_TOKENIZELENGTH (MAX_INPUTLINE + 80)
+#define CMD_TOKENIZELENGTH (MAX_INPUTLINE + MAX_ARGS)
typedef struct cmdalias_s
{
{
if (text[i] == '"')
quotes ^= 1;
- if (text[i] == '\\' && (text[i+1] == '"' || text[i+1] == '\\'))
+ // make sure i doesn't get > cursize which causes a negative
+ // size in memmove, which is fatal --blub
+ if (i < (cmd_text.cursize-1) && (text[i] == '\\' && (text[i+1] == '"' || text[i+1] == '\\')))
i++;
if ( !quotes && text[i] == ';')
break; // don't break if inside a quoted string
break;
}
- memcpy (line, text, i);
- line[i] = 0;
+ // better than CRASHING on overlong input lines that may SOMEHOW enter the buffer
+ if(i >= MAX_INPUTLINE)
+ {
+ Con_Printf("Warning: console input buffer had an overlong line. Ignored.\n");
+ line[0] = 0;
+ }
+ else
+ {
+ memcpy (line, text, i);
+ line[i] = 0;
+ }
// delete the text from the command buffer and move remaining commands down
// this is necessary because commands (exec, alias) can insert data at the
Con_Printf("couldn't exec %s\n",Cmd_Argv(1));
return;
}
- Con_DPrintf("execing %s\n",Cmd_Argv(1));
+ Con_Printf("execing %s\n",Cmd_Argv(1));
// if executing default.cfg for the first time, lock the cvar defaults
// it may seem backwards to insert this text BEFORE the default.cfg
}
else
{ // Invalid CVar
- Con_Printf("ERROR : CVar '%s' not found\n", Cmd_Argv(2) );
+ Con_Printf("ERROR : CVar '%s' not found\n", Cmd_Argv(1) );
}
}
}
*/
static void Cmd_ExecuteAlias (cmdalias_t *alias)
{
- static char buffer[ MAX_INPUTLINE + 2 ];
- static char buffer2[ MAX_INPUTLINE * 2 + 2 ];
+ static char buffer[ MAX_INPUTLINE ];
+ static char buffer2[ MAX_INPUTLINE ];
Cmd_PreprocessString( alias->value, buffer, sizeof(buffer) - 2, alias );
// insert at start of command buffer, so that aliases execute in order
// (fixes bug introduced by Black on 20050705)
-
+
// Note: Cbuf_PreprocessString will be called on this string AGAIN! So we
// have to make sure that no second variable expansion takes place, otherwise
// alias parameters containing dollar signs can have bad effects.