diff options
| author | Havoc Pennington <hp@redhat.com> | 2007-07-12 22:18:05 +0000 | 
|---|---|---|
| committer | Havoc Pennington <hp@redhat.com> | 2007-07-12 22:18:05 +0000 | 
| commit | ed57b9c663db89370055c5196e7e0b537647e9ef (patch) | |
| tree | 96c4f532c4827b8e3968c9e20acfa804b125af10 | |
| parent | e339814224d54c9b048ead2d6965f89790ec318a (diff) | |
2007-07-12  Havoc Pennington  <hp@redhat.com>
	* dbus/dbus-sysdeps-util.c (_dbus_sysdeps_test): invert the test
	for parsing hex as double to be sure it fails to work
	* dbus/dbus-sysdeps.c (_dbus_string_parse_double): don't allow hex numbers.
| -rw-r--r-- | ChangeLog | 7 | ||||
| -rw-r--r-- | dbus/dbus-sysdeps-util.c | 16 | ||||
| -rw-r--r-- | dbus/dbus-sysdeps.c | 6 | 
3 files changed, 16 insertions, 13 deletions
@@ -1,3 +1,10 @@ +2007-07-12  Havoc Pennington  <hp@redhat.com> + +	* dbus/dbus-sysdeps-util.c (_dbus_sysdeps_test): invert the test +	for parsing hex as double to be sure it fails to work + +	* dbus/dbus-sysdeps.c (_dbus_string_parse_double): don't allow hex numbers. +  2007-07-10  Havoc Pennington  <hp@redhat.com>  	* dbus/dbus-connection.c (struct DBusConnection): Fix from Olivier diff --git a/dbus/dbus-sysdeps-util.c b/dbus/dbus-sysdeps-util.c index 1f6ceb9b..4d1d0daa 100644 --- a/dbus/dbus-sysdeps-util.c +++ b/dbus/dbus-sysdeps-util.c @@ -142,20 +142,10 @@ _dbus_sysdeps_test (void)      }    _dbus_string_init_const (&str, "0xff"); -  if (!_dbus_string_parse_double (&str, -				  0, &val, &pos)) -    { -      _dbus_warn ("Failed to parse double"); -      exit (1); -    } -  if (ABS (0xff - val) > 1e-6) -    { -      _dbus_warn ("Failed to parse 0xff correctly, got: %f\n", val); -      exit (1); -    } -  if (pos != 4) +  if (_dbus_string_parse_double (&str, +                                 0, &val, &pos))      { -      _dbus_warn ("_dbus_string_parse_double of \"0xff\" returned wrong position %d", pos); +      _dbus_warn ("Should not have parsed hex as double\n");        exit (1);      } diff --git a/dbus/dbus-sysdeps.c b/dbus/dbus-sysdeps.c index c310b281..cd3e20e7 100644 --- a/dbus/dbus-sysdeps.c +++ b/dbus/dbus-sysdeps.c @@ -750,6 +750,12 @@ _dbus_string_parse_double (const DBusString *str,    p = _dbus_string_get_const_data_len (str, start,                                         _dbus_string_get_length (str) - start); +  /* parsing hex works on linux but isn't portable, so intercept it +   * here to get uniform behavior. +   */ +  if (p[0] == '0' && (p[1] == 'x' || p[1] == 'X')) +    return FALSE; +      end = NULL;    errno = 0;    v = ascii_strtod (p, &end);  | 
