udev-builtin-keyboard: Fix large scan codes on 32 bit architectures

Use strtoul(), as scan codes are always positive. On 32 bit architectures
strtol gives wrong results:

  strtol("fffffff0", &endptr, 16)

returns 2147483647 instead of 4294967280.

https://launchpad.net/bugs/1247676
This commit is contained in:
Martin Pitt
2013-11-04 07:25:45 +01:00
parent e9718c12a4
commit b151ca9933
+1 -1
View File
@@ -88,7 +88,7 @@ static int builtin_keyboard(struct udev_device *dev, int argc, char *argv[], boo
continue;
/* KEYBOARD_KEY_<hex scan code>=<key identifier string> */
scancode = strtol(key + 13, &endptr, 16);
scancode = strtoul(key + 13, &endptr, 16);
if (endptr[0] != '\0') {
log_error("Error, unable to parse scan code from '%s'\n", key);
continue;