[Telepathy-commits] [telepathy-mission-control/master] Dispatcher: check whether g_ascii_strto[u]ll succeeded
Alban Crequy
alban.crequy at collabora.co.uk
Mon Nov 24 06:47:35 PST 2008
---
src/mcd-dispatcher.c | 29 +++++++++++++++++++++++++++--
1 files changed, 27 insertions(+), 2 deletions(-)
diff --git a/src/mcd-dispatcher.c b/src/mcd-dispatcher.c
index 72e05a4..baec558 100644
--- a/src/mcd-dispatcher.c
+++ b/src/mcd-dispatcher.c
@@ -35,6 +35,7 @@
*/
#include <dlfcn.h>
+#include <errno.h>
#include <glib.h>
#include <glib/gprintf.h>
#include <glib/gi18n.h>
@@ -1812,10 +1813,22 @@ parse_client_filter (GKeyFile *file, const gchar *group)
{
/* g_key_file_get_integer cannot be used because we need
* to support 64 bits */
+ guint i;
GValue *value = tp_g_value_slice_new (G_TYPE_UINT64);
gchar *str = g_key_file_get_string (file, group, key,
NULL);
- g_value_set_uint64 (value, g_ascii_strtoull (str, NULL, 0));
+ errno = 0;
+ i = g_ascii_strtoull (str, NULL, 0);
+ if (errno != 0)
+ {
+ g_warning ("Invalid unsigned integer '%s' in client"
+ " file", str);
+ }
+ else
+ {
+ g_value_set_uint64 (value, i);
+ g_hash_table_insert (filter, file_property, value);
+ }
g_free (str);
break;
}
@@ -1825,10 +1838,22 @@ parse_client_filter (GKeyFile *file, const gchar *group)
case 'i':
case 'x': /* signed integer */
{
+ gint i;
GValue *value = tp_g_value_slice_new (G_TYPE_INT64);
gchar *str = g_key_file_get_string (file, group, key,
NULL);
- g_value_set_uint64 (value, g_ascii_strtoll (str, NULL, 0));
+ errno = 0;
+ i = g_ascii_strtoll (str, NULL, 0);
+ if (errno != 0)
+ {
+ g_warning ("Invalid signed integer '%s' in client"
+ " file", str);
+ }
+ else
+ {
+ g_value_set_uint64 (value, i);
+ g_hash_table_insert (filter, file_property, value);
+ }
g_free (str);
break;
}
--
1.5.6.5
More information about the Telepathy-commits
mailing list