summaryrefslogtreecommitdiffstats
path: root/kioslaves/imap4/imapparser.cc
diff options
context:
space:
mode:
authorSlávek Banko <[email protected]>2012-09-26 14:54:22 +0200
committerSlávek Banko <[email protected]>2012-09-26 17:38:04 +0200
commit590161fd805b5d9c397a5dc192996d13acdbaff6 (patch)
treeb7026562f10f2eac7f851eb4ce1cc48ab363b83a /kioslaves/imap4/imapparser.cc
parente09b1f3dbdcdf1f21732552d0e2db11ae3d7bf58 (diff)
downloadtdepim-590161fd805b5d9c397a5dc192996d13acdbaff6.tar.gz
tdepim-590161fd805b5d9c397a5dc192996d13acdbaff6.zip
Fix more SEGV in imapparser
Thanks to Francois Andriot for the patch This resolves Bug 1235
Diffstat (limited to 'kioslaves/imap4/imapparser.cc')
-rw-r--r--kioslaves/imap4/imapparser.cc9
1 files changed, 7 insertions, 2 deletions
diff --git a/kioslaves/imap4/imapparser.cc b/kioslaves/imap4/imapparser.cc
index 9e8d68c90..d7ad8697e 100644
--- a/kioslaves/imap4/imapparser.cc
+++ b/kioslaves/imap4/imapparser.cc
@@ -345,6 +345,7 @@ imapParser::parseUntagged (parseString & result)
parseOneWordC(result); // *
TQByteArray what = parseLiteral (result); // see whats coming next
+ if(!what.isEmpty ()) {
switch (what[0])
{
//the status responses
@@ -482,6 +483,7 @@ imapParser::parseUntagged (parseString & result)
if (valid)
{
what = parseLiteral (result);
+ if(!what.isEmpty ()) {
switch (what[0])
{
case 'E':
@@ -520,10 +522,12 @@ imapParser::parseUntagged (parseString & result)
default:
break;
}
+ }
}
}
break;
} //switch
+ }
} //func
@@ -1915,9 +1919,10 @@ TQCString imapParser::parseLiteralC(parseString & inWords, bool relay, bool stop
if (!inWords.isEmpty() && inWords[0] == '{')
{
TQCString retVal;
- ulong runLen = inWords.find ('}', 1);
- if (runLen > 0)
+ long srunLen = inWords.find ('}', 1); // Can return -1, so use a signed long
+ if (srunLen > 0)
{
+ ulong runLen = (ulong)srunLen;
bool proper;
ulong runLenSave = runLen + 1;
TQCString tmpstr(runLen);