Fix read past end of buffer after call to TokenMatch
IsSpaceOrNewLine returns true on end of input (NUL character). But if TokenMatch considers a token at end of input to match it sets "in" to one past end of buffer. This will lead to reading past the end of buffer on any subsequent operation.pull/484/head
parent
7d3d66936b
commit
c342778f42
|
@ -201,7 +201,12 @@ template <class char_t>
|
||||||
AI_FORCE_INLINE bool TokenMatch(char_t*& in, const char* token, unsigned int len)
|
AI_FORCE_INLINE bool TokenMatch(char_t*& in, const char* token, unsigned int len)
|
||||||
{
|
{
|
||||||
if (!::strncmp(token,in,len) && IsSpaceOrNewLine(in[len])) {
|
if (!::strncmp(token,in,len) && IsSpaceOrNewLine(in[len])) {
|
||||||
|
if (in[len] != '\0') {
|
||||||
in += len+1;
|
in += len+1;
|
||||||
|
} else {
|
||||||
|
// If EOF after the token make sure we don't go past end of buffer
|
||||||
|
in += len;
|
||||||
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue