From: Amos Jeffries Date: Fri, 30 May 2014 12:41:24 +0000 (-0700) Subject: Cleanup Tokenizer::token X-Git-Tag: SQUID_3_5_0_1~217^2~2 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=badfbcf071aac1b980b723248e6fe3c83d5fe481;p=thirdparty%2Fsquid.git Cleanup Tokenizer::token * remove incorrect comment * return false with no side effects if end of buffer is reached inside the token, unless \0 is defined as one of the delimiters. --- diff --git a/src/parser/Tokenizer.cc b/src/parser/Tokenizer.cc index 453f36a248..b3bc3ce5a2 100644 --- a/src/parser/Tokenizer.cc +++ b/src/parser/Tokenizer.cc @@ -5,12 +5,14 @@ bool Parser::Tokenizer::token(SBuf &returnedToken, const CharacterSet &delimiters) { SBuf savebuf(buf_); - SBuf retval; - SBuf::size_type tokenLen = 0; skip(delimiters); - // can't use prefix as we're looking for the first char not in delimiters - tokenLen = buf_.findFirstOf(delimiters); // not found = npos => consume to end - retval = buf_.consume(tokenLen); + SBuf::size_type tokenLen = buf_.findFirstOf(delimiters); // not found = npos => consume to end + if (tokenLen == SBuf::npos && !delimiters['\0']) { + // no delimiter found, nor is NUL/EOS/npos acceptible as one + buf_ = savebuf; + return false; + } + SBuf retval = buf_.consume(tokenLen); skip(delimiters); returnedToken = retval; return true;