Fix more SEGV in imapparser

Thanks to Francois Andriot for the patch
This resolves Bug 1235
(cherry picked from commit 590161fd80)
v3.5.13-sru
Slávek Banko 12 years ago
parent e3cb7a61df
commit 9dc91538a9

@ -345,6 +345,7 @@ imapParser::parseUntagged (parseString & result)
parseOneWordC(result); // * parseOneWordC(result); // *
TQByteArray what = parseLiteral (result); // see whats coming next TQByteArray what = parseLiteral (result); // see whats coming next
if(!what.isEmpty ()) {
switch (what[0]) switch (what[0])
{ {
//the status responses //the status responses
@ -482,6 +483,7 @@ imapParser::parseUntagged (parseString & result)
if (valid) if (valid)
{ {
what = parseLiteral (result); what = parseLiteral (result);
if(!what.isEmpty ()) {
switch (what[0]) switch (what[0])
{ {
case 'E': case 'E':
@ -520,10 +522,12 @@ imapParser::parseUntagged (parseString & result)
default: default:
break; break;
} }
}
} }
} }
break; break;
} //switch } //switch
}
} //func } //func
@ -1915,9 +1919,10 @@ TQCString imapParser::parseLiteralC(parseString & inWords, bool relay, bool stop
if (!inWords.isEmpty() && inWords[0] == '{') if (!inWords.isEmpty() && inWords[0] == '{')
{ {
TQCString retVal; TQCString retVal;
ulong runLen = inWords.find ('}', 1); long srunLen = inWords.find ('}', 1); // Can return -1, so use a signed long
if (runLen > 0) if (srunLen > 0)
{ {
ulong runLen = (ulong)srunLen;
bool proper; bool proper;
ulong runLenSave = runLen + 1; ulong runLenSave = runLen + 1;
TQCString tmpstr(runLen); TQCString tmpstr(runLen);

Loading…
Cancel
Save