diff --git a/kdelibs-4.1.0-kcookiejar-crash.patch b/kdelibs-4.1.0-kcookiejar-crash.patch index b8a0392..de79a2c 100644 --- a/kdelibs-4.1.0-kcookiejar-crash.patch +++ b/kdelibs-4.1.0-kcookiejar-crash.patch @@ -1,12 +1,68 @@ Index: kioslave/http/kcookiejar/kcookiejar.cpp =================================================================== ---- kioslave/http/kcookiejar/kcookiejar.cpp (revision 844311) -+++ kioslave/http/kcookiejar/kcookiejar.cpp (working copy) -@@ -1367,6 +1367,7 @@ bool KCookieJar::loadCookies(const QStri +--- kioslave/http/kcookiejar/kcookiejar.cpp (revision 844829) ++++ kioslave/http/kcookiejar/kcookiejar.cpp (revision 844830) +@@ -1366,16 +1366,18 @@ + if ((line[0] == '#') || (line[0] == '[')) continue; - const char *host( parseField(line) ); -+ if (!host) continue; - const char *domain( parseField(line) ); - const char *path( parseField(line) ); - const char *expStr( parseField(line) ); +- const char *host( parseField(line) ); +- const char *domain( parseField(line) ); +- const char *path( parseField(line) ); +- const char *expStr( parseField(line) ); +- if (!expStr) continue; +- int expDate = (time_t) strtoul(expStr, 0, 10); +- const char *verStr( parseField(line) ); +- if (!verStr) continue; +- int protVer = (time_t) strtoul(verStr, 0, 10); +- const char *name( parseField(line) ); ++ const QString host = QString::fromLatin1( parseField(line) ); ++ const QString domain = QString::fromLatin1( parseField(line) ); ++ if (host.isEmpty() && domain.isEmpty()) ++ continue; ++ const QString path = QString::fromLatin1( parseField(line) ); ++ const QString expStr = QString::fromLatin1( parseField(line) ); ++ if (expStr.isEmpty()) continue; ++ const int expDate = expStr.toInt(); ++ const QString verStr = QString::fromLatin1( parseField(line) ); ++ if (verStr.isEmpty()) continue; ++ int protVer = verStr.toInt(); ++ QString name = QString::fromLatin1( parseField(line) ); + bool keepQuotes = false; + bool secure = false; + bool httpOnly = false; +@@ -1412,11 +1414,11 @@ + if ((expDate == 0) || (expDate < curTime)) + continue; + +- KHttpCookie cookie(QString::fromLatin1(host), +- QString::fromLatin1(domain), +- QString::fromLatin1(path), +- QString::fromLatin1(name), +- QString::fromLatin1(value), ++ KHttpCookie cookie(host, ++ domain, ++ path, ++ name, ++ value, + expDate, protVer, + secure, httpOnly, explicitPath); + addCookie(cookie); +Index: kioslave/http/kcookiejar/tests/kcookiejartest.cpp +=================================================================== +--- kioslave/http/kcookiejar/tests/kcookiejartest.cpp (revision 844829) ++++ kioslave/http/kcookiejar/tests/kcookiejartest.cpp (revision 844830) +@@ -80,6 +80,13 @@ + QString file = KStandardDirs::locateLocal("config", "kcookiejar-testcookies"); + QFile::remove(file); + jar->saveCookies(file); ++ ++ // Add an empty domain to the cookies file, just for testing robustness ++ QFile f(file); ++ f.open(QIODevice::Append); ++ f.write("[]\n \"\" \"/\" 1584320400 0 h 4 x\n"); ++ f.close(); ++ + delete jar; + jar = new KCookieJar(); + clearConfig(); diff --git a/kdelibs.spec b/kdelibs.spec index b347eaf..7cecd59 100644 --- a/kdelibs.spec +++ b/kdelibs.spec @@ -86,6 +86,7 @@ Patch19: kdelibs-4.0.98-revert-kinit-regression.patch # http://bugs.kde.org/167825 , http://bugzilla.redhat.com/457526 Patch100: kdelibs-4.1.0-kde#167826.patch # fix kcookiejar crash on invalid cookie file from KDE 3 +# http://websvn.kde.org/?view=rev&revision=844830 Patch101: kdelibs-4.1.0-kcookiejar-crash.patch BuildRequires: qt4-devel >= 4.4.0