[Kde-pim] parseRFCDate/parseISODate - wrong bad date handling (PATCH)
David Jarvie
djarvie at kde.org
Wed Jul 16 12:48:32 BST 2008
On Wednesday 16 July 2008 12:27, masp01 at centrum.cz wrote:
> Hi,
>
> I've found bug in kdepimlibs/syndication/tools.cpp (bugs.kde.org - 166721)
>
> description: if string contains date in wrong format, parseRFCDate (or
> parseISODate) returns 2^32-1
>
> result: some apps (akregator) don't know about error, because returned
> value uint32_t(-1) is not the expected time_t(-1) ( = uint64_t(-1) at
> least on my computer). This leads to wrong dates being displayed
>
> Problem is located between Qt 4 and KDateTime.
>
> KDateTime::toTime_t() returns time_t (64bit at least on my computer)
> but
> QDateTime::toTime_t() returns uint (32bit)
>
> QDateTime's -1 is converted to 4294967295, but error is tested for -1
>
> solution: QDateTime's return type should be time_t, not uint
>
> fix: Don't test for -1 but do QDateTime/KDateTime::isValid() tests
>
>
> patch to fix this is attached
>
>
> time_t parseISODate(const QString& str)
> {
> - time_t res = KDateTime::fromString(str,
KDateTime::ISODate).toTime_t();
> - return res != -1 ? res : 0;
> + const KDateTime kdt = KDateTime::fromString(str, KDateTime::ISODate);
> + return kdt.isValid() ? kdt.toTime_t() : 0;
> }
>
> time_t parseRFCDate(const QString& str)
> {
> - time_t res = KDateTime::fromString(str,
KDateTime::RFCDate).toTime_t();
> - return res != -1 ? res : 0;
> + const KDateTime kdt = KDateTime::fromString(str, KDateTime::RFCDate);
> + return kdt.isValid() ? kdt.toTime_t() : 0;
> }
>
> time_t parseDate(const QString& str, DateFormat hint)
How about casting the -1 to time_t in the return statements instead:
return res != (time_t)(-1) ? res : 0;
--
David Jarvie.
KAlarm author & maintainer.
http://www.astrojar.org.uk/kalarm
_______________________________________________
KDE PIM mailing list kde-pim at kde.org
https://mail.kde.org/mailman/listinfo/kde-pim
KDE PIM home page at http://pim.kde.org/
More information about the kde-pim
mailing list