aboutsummaryrefslogtreecommitdiffstats
path: root/calendar/gui/alarm-notify/config-data.c
diff options
context:
space:
mode:
authorMilan Crha <mcrha@redhat.com>2009-04-27 18:13:35 +0800
committerMilan Crha <mcrha@redhat.com>2009-04-27 18:13:35 +0800
commitd4def43e4d7fba2b8a123b7d11af8170b0f93a1b (patch)
tree547bd0d51fa3340737fdc2dcc5eb6afadb1b5376 /calendar/gui/alarm-notify/config-data.c
parentb29f1ed5e653974acf983f211901139d0f76cf12 (diff)
downloadgsoc2013-evolution-d4def43e4d7fba2b8a123b7d11af8170b0f93a1b.tar
gsoc2013-evolution-d4def43e4d7fba2b8a123b7d11af8170b0f93a1b.tar.gz
gsoc2013-evolution-d4def43e4d7fba2b8a123b7d11af8170b0f93a1b.tar.bz2
gsoc2013-evolution-d4def43e4d7fba2b8a123b7d11af8170b0f93a1b.tar.lz
gsoc2013-evolution-d4def43e4d7fba2b8a123b7d11af8170b0f93a1b.tar.xz
gsoc2013-evolution-d4def43e4d7fba2b8a123b7d11af8170b0f93a1b.tar.zst
gsoc2013-evolution-d4def43e4d7fba2b8a123b7d11af8170b0f93a1b.zip
Sanitize values from GConf before using them
** Fix for bug #491755 * gui/alarm-notify/config-data.c: (config_data_set_last_notification_time), (config_data_get_last_notification_time): Sanitize values from GConf before using them.
Diffstat (limited to 'calendar/gui/alarm-notify/config-data.c')
-rw-r--r--calendar/gui/alarm-notify/config-data.c14
1 files changed, 10 insertions, 4 deletions
diff --git a/calendar/gui/alarm-notify/config-data.c b/calendar/gui/alarm-notify/config-data.c
index 81cbc3480c..5a05cfd341 100644
--- a/calendar/gui/alarm-notify/config-data.c
+++ b/calendar/gui/alarm-notify/config-data.c
@@ -259,7 +259,7 @@ void
config_data_set_last_notification_time (time_t t)
{
GConfClient *client;
- time_t current_t;
+ time_t current_t, now = time (NULL);
g_return_if_fail (t != -1);
@@ -269,7 +269,7 @@ config_data_set_last_notification_time (time_t t)
/* we only store the new notification time if it is bigger
than the already stored one */
current_t = gconf_client_get_int (client, KEY_LAST_NOTIFICATION_TIME, NULL);
- if (t > current_t)
+ if (t > current_t || current_t > now)
gconf_client_set_int (client, KEY_LAST_NOTIFICATION_TIME, t, NULL);
}
@@ -290,8 +290,14 @@ config_data_get_last_notification_time (void)
return -1;
value = gconf_client_get_without_default (client, KEY_LAST_NOTIFICATION_TIME, NULL);
- if (value)
- return (time_t) gconf_value_get_int (value);
+ if (value) {
+ time_t val = (time_t) gconf_value_get_int (value), now = time (NULL);
+
+ if (val > now)
+ val = now;
+
+ return val;
+ }
return time (NULL);
}