From: Matthias Clasen Date: Fri, 10 Jun 2005 13:24:30 +0000 (+0000) Subject: Forgotten file X-Git-Tag: GLIB_2_7_0~3 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=42a32a781772f7490d0a459bd0e93dfa7db5e108;p=platform%2Fupstream%2Fglib.git Forgotten file --- diff --git a/glib/gkeyfile.c b/glib/gkeyfile.c index 8fce689..0dc1b6c 100644 --- a/glib/gkeyfile.c +++ b/glib/gkeyfile.c @@ -3167,15 +3167,30 @@ g_key_file_parse_value_as_integer (GKeyFile *key_file, GError **error) { gchar *end_of_valid_int; - gint int_value = 0; + glong long_value; + gint int_value; - int_value = strtol (value, &end_of_valid_int, 10); + errno = 0; + long_value = strtol (value, &end_of_valid_int, 10); - if (*end_of_valid_int != '\0') - g_set_error (error, G_KEY_FILE_ERROR, - G_KEY_FILE_ERROR_INVALID_VALUE, - _("Value '%s' cannot be interpreted as a number."), value); + if (*value == '\0' || *end_of_valid_int != '\0') + { + g_set_error (error, G_KEY_FILE_ERROR, + G_KEY_FILE_ERROR_INVALID_VALUE, + _("Value '%s' cannot be interpreted as a number."), value); + return 0; + } + int_value = long_value; + if (int_value != long_value || errno == ERANGE) + { + g_set_error (error, + G_KEY_FILE_ERROR, + G_KEY_FILE_ERROR_INVALID_VALUE, + _("Integer value '%s' out of range"), value); + return 0; + } + return int_value; }