- Added "special" console command for executing action specials.
- Fixed buffer overflow attack for DEM_RUNSCRIPT(2). SVN r3088 (trunk)
This commit is contained in:
parent
869b9c9ccc
commit
46ad4ec4bd
4 changed files with 80 additions and 3 deletions
|
|
@ -453,7 +453,7 @@ CCMD (puke)
|
|||
|
||||
if (argc < 2 || argc > 5)
|
||||
{
|
||||
Printf (" puke <script> [arg1] [arg2] [arg3]\n");
|
||||
Printf ("Usage: puke <script> [arg1] [arg2] [arg3]\n");
|
||||
}
|
||||
else
|
||||
{
|
||||
|
|
@ -489,6 +489,52 @@ CCMD (puke)
|
|||
}
|
||||
}
|
||||
|
||||
CCMD (special)
|
||||
{
|
||||
int argc = argv.argc();
|
||||
|
||||
if (argc < 2 || argc > 7)
|
||||
{
|
||||
Printf("Usage: special <special-name> [arg1] [arg2] [arg3] [arg4] [arg5]\n");
|
||||
}
|
||||
else
|
||||
{
|
||||
int specnum;
|
||||
|
||||
if (argv[1][0] >= '0' && argv[1][0] <= '9')
|
||||
{
|
||||
specnum = atoi(argv[1]);
|
||||
if (specnum < 0 || specnum > 255)
|
||||
{
|
||||
Printf("Bad special number\n");
|
||||
return;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
int min_args;
|
||||
specnum = P_FindLineSpecial(argv[1], &min_args);
|
||||
if (specnum == 0 || min_args < 0)
|
||||
{
|
||||
Printf("Unknown special\n");
|
||||
return;
|
||||
}
|
||||
if (argc < 2 + min_args)
|
||||
{
|
||||
Printf("%s needs at least %d argument%s\n", argv[1], min_args, min_args == 1 ? "" : "s");
|
||||
return;
|
||||
}
|
||||
}
|
||||
Net_WriteByte(DEM_RUNSPECIAL);
|
||||
Net_WriteByte(specnum);
|
||||
Net_WriteByte(argc - 2);
|
||||
for (int i = 2; i < argc; ++i)
|
||||
{
|
||||
Net_WriteLong(atoi(argv[i]));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
CCMD (error)
|
||||
{
|
||||
if (argv.argc() > 1)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue