kdelibs/kdelibs-4.1.0-kcookiejar-cr...

69 lines
3.0 KiB
Diff

Index: kioslave/http/kcookiejar/kcookiejar.cpp
===================================================================
--- 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) );
- 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();