From 001d9cd69dfa6fe2a827d01e94727912c3483ae9 Mon Sep 17 00:00:00 2001
From: Martin Briza <mbriza@redhat.com>
Date: Mon, 7 Oct 2013 18:01:58 +0200
Subject: [PATCH] kcontrol/dateandtime: Check for valid return value of
QDateTime::toTime_t()
---
kcontrol/dateandtime/dtime.cpp | 7 ++++++-
kcontrol/dateandtime/helper.cpp | 6 +++++-
2 files changed, 11 insertions(+), 2 deletions(-)
diff --git a/kcontrol/dateandtime/dtime.cpp b/kcontrol/dateandtime/dtime.cpp
index 518afe5..feb5799 100644
--- a/kcontrol/dateandtime/dtime.cpp
+++ b/kcontrol/dateandtime/dtime.cpp
@@ -252,7 +252,12 @@ void Dtime::save( QVariantMap& helperargs )
kDebug() << "Set date " << dt;
helperargs["date"] = true;
- helperargs["newdate"] = QString::number(dt.toTime_t());
+ time_t newDate = dt.toTime_t();
+ if (newDate == (unsigned int) -1) { // toTime_t() error
+ helperargs["newdate"] = QString("Overflow");
+ } else {
+ helperargs["newdate"] = QString::number(newDate);
+ }
helperargs["olddate"] = QString::number(::time(0));
}
diff --git a/kcontrol/dateandtime/helper.cpp b/kcontrol/dateandtime/helper.cpp
index 9168db3..3e994e2 100644
--- a/kcontrol/dateandtime/helper.cpp
+++ b/kcontrol/dateandtime/helper.cpp
@@ -94,7 +94,11 @@ int ClockHelper::date( const QString& newdate, const QString& olddate )
{
struct timeval tv;
- tv.tv_sec = newdate.toULong() - olddate.toULong() + time(0);
+ bool ok;
+ tv.tv_sec = newdate.toULong(&ok) - olddate.toULong() + time(0);
+ if (!ok) {
+ return DateError;
+ }
tv.tv_usec = 0;
if (settimeofday(&tv, 0)) {
return DateError;
--
1.8.3.1