forked from github/server
Crash wenn nicht genug Parameter für einen Zauber angegeben wurden. Sicherheitscheck in add_spellparam
This commit is contained in:
parent
3e53d8bd09
commit
253750574e
|
@ -1853,6 +1853,10 @@ add_spellparameter(region *target_r, unit *u, const char *syntax, char ** param,
|
||||||
int p = 0;
|
int p = 0;
|
||||||
const char * c = syntax;
|
const char * c = syntax;
|
||||||
spellparameter *par;
|
spellparameter *par;
|
||||||
|
int minlen = 0;
|
||||||
|
|
||||||
|
while (*c!=0) if (*c++!='+') ++minlen;
|
||||||
|
c = syntax;
|
||||||
|
|
||||||
/* mindestens ein Ziel (Ziellose Zauber werden nicht
|
/* mindestens ein Ziel (Ziellose Zauber werden nicht
|
||||||
* geparst) */
|
* geparst) */
|
||||||
|
@ -1954,7 +1958,7 @@ add_spellparameter(region *target_r, unit *u, const char *syntax, char ** param,
|
||||||
|
|
||||||
/* im Endeffekt waren es evtl. nur p parameter (wegen TEMP) */
|
/* im Endeffekt waren es evtl. nur p parameter (wegen TEMP) */
|
||||||
par->length = p;
|
par->length = p;
|
||||||
if (fail) {
|
if (fail || par->length<minlen) {
|
||||||
cmistake(u, ord, 209, MSG_MAGIC);
|
cmistake(u, ord, 209, MSG_MAGIC);
|
||||||
free_spellparameter(par);
|
free_spellparameter(par);
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
Loading…
Reference in New Issue