diff options
author | Milan Crha <mcrha@redhat.com> | 2009-04-27 18:13:35 +0800 |
---|---|---|
committer | Matthew Barnes <mbarnes@redhat.com> | 2009-04-28 20:06:00 +0800 |
commit | f785b69224186fe027eab226c776cd95008724b6 (patch) | |
tree | ce64d90172018d3cbbbc18d16e731e171ce684b0 /calendar | |
parent | 06a883940fcd97c5324fc2cdf3b3ffc50772208e (diff) | |
download | gsoc2013-evolution-f785b69224186fe027eab226c776cd95008724b6.tar.gz gsoc2013-evolution-f785b69224186fe027eab226c776cd95008724b6.tar.zst gsoc2013-evolution-f785b69224186fe027eab226c776cd95008724b6.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')
-rw-r--r-- | calendar/ChangeLog | 9 | ||||
-rw-r--r-- | calendar/gui/alarm-notify/config-data.c | 14 |
2 files changed, 19 insertions, 4 deletions
diff --git a/calendar/ChangeLog b/calendar/ChangeLog index 793c4d71d8..feba01be00 100644 --- a/calendar/ChangeLog +++ b/calendar/ChangeLog @@ -1,5 +1,14 @@ 2009-04-27 Milan Crha <mcrha@redhat.com> + ** 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. + +2009-04-27 Milan Crha <mcrha@redhat.com> + ** Fix for bug #575773 * gui/e-calendar-table.etspec: 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); } |