chiark
/
gitweb
/
~ianmdlvl
/
elogind.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
libudev: fix sysnum logic for digit-only device names
[elogind.git]
/
udev
/
lib
/
libudev-device.c
diff --git
a/udev/lib/libudev-device.c
b/udev/lib/libudev-device.c
index daf2217765ee373efc0b326696f77d7b27cd07f8..b5d42354e548d31c33f4304f6e35ef6049d362dd 100644
(file)
--- a/
udev/lib/libudev-device.c
+++ b/
udev/lib/libudev-device.c
@@
-75,7
+75,7
@@
static size_t devpath_to_db_path(struct udev *udev, const char *devpath, char *f
return util_path_encode(&filename[start], len - start);
}
return util_path_encode(&filename[start], len - start);
}
-
static int
device_read_db(struct udev_device *udev_device)
+
int udev_
device_read_db(struct udev_device *udev_device)
{
struct stat stats;
char filename[UTIL_PATH_SIZE];
{
struct stat stats;
char filename[UTIL_PATH_SIZE];
@@
-220,7
+220,7
@@
static void device_load_info(struct udev_device *device)
{
device->info_loaded = 1;
udev_device_read_uevent_file(device);
{
device->info_loaded = 1;
udev_device_read_uevent_file(device);
- device_read_db(device);
+
udev_
device_read_db(device);
}
void udev_device_set_info_loaded(struct udev_device *device)
}
void udev_device_set_info_loaded(struct udev_device *device)
@@
-936,8
+936,13
@@
int udev_device_set_syspath(struct udev_device *udev_device, const char *syspath
}
/* trailing number */
}
/* trailing number */
- while (isdigit(udev_device->sysname[--len]))
+ while (
len > 0 &&
isdigit(udev_device->sysname[--len]))
udev_device->sysnum = &udev_device->sysname[len];
udev_device->sysnum = &udev_device->sysname[len];
+
+ /* sysname is completely numeric */
+ if (len == 0)
+ udev_device->sysnum = NULL;
+
return 0;
}
return 0;
}