[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-commits
Subject:    branches/KDE/4.3/kdelibs/kioslave/http/kcookiejar
From:       Dawit Alemayehu <adawit () kde ! org>
Date:       2009-12-14 17:30:20
Message-ID: 1260811820.699580.5501.nullmailer () svn ! kde ! org
[Download RAW message or body]

SVN commit 1062412 by adawit:

Backport the fix for the Y2K38 problem with the cookiejar's expiration date variable

 M  +8 -8      kcookiejar.cpp  
 M  +4 -4      kcookiejar.h  
 M  +2 -2      kcookiewin.cpp  
 M  +5 -0      tests/cookie.test  


--- branches/KDE/4.3/kdelibs/kioslave/http/kcookiejar/kcookiejar.cpp #1062411:1062412
@@ -129,7 +129,7 @@
                  const QString &_path,
                  const QString &_name,
                  const QString &_value,
-                 time_t _expireDate,
+                 qint64 _expireDate,
                  int _protocolVersion,
                  bool _secure,
                  bool _httpOnly,
@@ -150,7 +150,7 @@
 //
 // Checks if a cookie has been expired
 //
-bool    KHttpCookie::isExpired(time_t currentDate) const
+bool    KHttpCookie::isExpired(qint64 currentDate) const
 {
     return (mExpireDate != 0) && (mExpireDate < currentDate);
 }
@@ -722,7 +722,7 @@
 
             // Insert cookie in chain
             cookieList.append(cookie);
-            lastCookie = cookieList.end(); --lastCookie;
+            lastCookie = cookieList.end(); --lastCookie;            
         }
         else if (strncasecmp(cookieStr, "Set-Cookie2:", 12) == 0)
         {
@@ -1246,7 +1246,7 @@
 
     QTextStream ts(&saveFile);
 
-    time_t curTime = time(0);
+    qint64 curTime = time(0);
 
     ts << "# KDE Cookie File v2\n#\n";
 
@@ -1283,9 +1283,9 @@
                 domain += cookie.domain();
                 domain += '"';
                 // TODO: replace with direct QTextStream output ?
-                s.sprintf("%-20s %-20s %-12s %10lu  %3d %-20s %-4i %s\n",
+                s.sprintf("%-20s %-20s %-12s %10lld  %3d %-20s %-4i %s\n",
                         cookie.host().toLatin1().constData(), \
                domain.toLatin1().constData(),
-                        path.toLatin1().constData(), (unsigned long) \
cookie.expireDate(), +                        path.toLatin1().constData(), \
cookie.expireDate(),  cookie.protocolVersion(),
                         cookie.name().isEmpty() ? \
                cookie.value().toLatin1().constData() : \
                cookie.name().toLatin1().constData(),
                         (cookie.isSecure() ? 1 : 0) + (cookie.isHttpOnly() ? 2 : 0) \
+ @@ -1342,7 +1342,7 @@
         return false;
     }
 
-    time_t curTime = time(0);
+    qint64 curTime = time(0);
 
     char *buffer = new char[READ_BUFFER_SIZE];
 
@@ -1378,7 +1378,7 @@
             const QString path = QString::fromLatin1( parseField(line) );
             const QString expStr = QString::fromLatin1( parseField(line) );
             if (expStr.isEmpty()) continue;
-            const int expDate = expStr.toInt();
+            const qint64 expDate = expStr.toLongLong();
             const QString verStr = QString::fromLatin1( parseField(line) );
             if (verStr.isEmpty()) continue;
             int protVer  = verStr.toInt();
--- branches/KDE/4.3/kdelibs/kioslave/http/kcookiejar/kcookiejar.h #1062411:1062412
@@ -58,7 +58,7 @@
     QString mPath;
     QString mName;
     QString mValue;
-    time_t  mExpireDate;
+    qint64  mExpireDate;
     int     mProtocolVersion;
     bool    mSecure;
     bool    mCrossDomain;
@@ -74,7 +74,7 @@
                          const QString &_path=QString(),
                          const QString &_name=QString(),
                          const QString &_value=QString(),
-                         time_t _expireDate=0,
+                         qint64 _expireDate=0,
                          int _protocolVersion=0,
                          bool _secure = false,
                          bool _httpOnly = false,
@@ -88,10 +88,10 @@
     QList<long> &windowIds() { return mWindowIds; }
     const QList<long> &windowIds() const { return mWindowIds; }
     void    fixDomain(const QString &domain) { mDomain = domain; }
-    time_t  expireDate() const { return mExpireDate; }
+    qint64  expireDate() const { return mExpireDate; }
     int     protocolVersion() const { return mProtocolVersion; }
     bool    isSecure() const { return mSecure; }
-    bool    isExpired(time_t currentDate) const;
+    bool    isExpired(qint64 currentDate) const;
     bool    isCrossDomain() const { return mCrossDomain; }
     bool    isHttpOnly() const { return mHttpOnly; }
     bool    hasExplicitPath() const { return mExplicitPath; }
--- branches/KDE/4.3/kdelibs/kioslave/http/kcookiejar/kcookiewin.cpp #1062411:1062412
@@ -40,7 +40,6 @@
 #include <QtGui/QLabel>
 #include <QtGui/QLayout>
 #include <QtGui/QGroupBox>
-#include <QtCore/QDate>
 #include <QtGui/QPushButton>
 #include <QtGui/QRadioButton>
 #include <QtGui/QShortcut>
@@ -53,6 +52,7 @@
 #include <kapplication.h>
 #include <kwindowsystem.h>
 #include <kvbox.h>
+#include <kdatetime.h>
 
 KCookieWin::KCookieWin( QWidget *parent, KHttpCookieList cookieList,
                         int defaultButton, bool showDetails )
@@ -284,7 +284,7 @@
     else
         m_domain->setText(cookie.domain());
     m_path->setText(cookie.path());
-    QDateTime cookiedate;
+    KDateTime cookiedate;
     cookiedate.setTime_t(cookie.expireDate());
     if (cookie.expireDate())
         m_expires->setText(KGlobal::locale()->formatDateTime(cookiedate));
--- branches/KDE/4.3/kdelibs/kioslave/http/kcookiejar/tests/cookie.test \
#1062411:1062412 @@ -160,3 +160,8 @@
 CHECK https://192.168.0.1 Cookie: name1=value1; name11=value11; name3=value3
 CHECK http://192.168.0.10
 CHECK http://192.168.0
+## Check expiration dates for the so called Y2K38 (Year 2038) problem
+COOKIE ASK http://foo.bar Set-Cookie: CFID=15727;expires=Tue, 06-Dec-2039 00:30:42 \
GMT;path=/ +COOKIE ASK http://foo.bar Set-Cookie: CFTOKEN=49898422;expires=Tue, \
06-Dec-2039 00:30:42 GMT;path=/ +CHECK http://foo.bar Cookie: CFID=15727; \
CFTOKEN=49898422 +CLEAR COOKIES


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic