+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
}
_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);
}
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);