chiark
/
gitweb
/
~ianmdlvl
/
elogind.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (parent:
96d3d86
)
sysfs: skip unknown sysfs directories
author
Kay Sievers
<kay.sievers@vrfy.org>
Mon, 4 Jun 2007 09:20:18 +0000
(11:20 +0200)
committer
Kay Sievers
<kay.sievers@vrfy.org>
Mon, 4 Jun 2007 09:20:18 +0000
(11:20 +0200)
udev_sysfs.c
patch
|
blob
|
history
udevinfo.c
patch
|
blob
|
history
diff --git
a/udev_sysfs.c
b/udev_sysfs.c
index 6e6f16c16fd2266b42b52c33926518a93f30f2b3..34ae9ac14fd400758d5d3a618dc527d19a9bbd54 100644
(file)
--- a/
udev_sysfs.c
+++ b/
udev_sysfs.c
@@
-155,9
+155,21
@@
struct sysfs_device *sysfs_device_get(const char *devpath)
int len;
char *pos;
int len;
char *pos;
+ /* we handle only these devpathes */
+ if (devpath != NULL &&
+ strncmp(devpath, "/devices/", 9) != 0 &&
+ strncmp(devpath, "/subsystem/", 11) != 0 &&
+ strncmp(devpath, "/module/", 8) != 0 &&
+ strncmp(devpath, "/bus/", 5) != 0 &&
+ strncmp(devpath, "/class/", 7) != 0 &&
+ strncmp(devpath, "/block/", 7) != 0)
+ return NULL;
+
dbg("open '%s'", devpath);
strlcpy(devpath_real, devpath, sizeof(devpath_real));
remove_trailing_chars(devpath_real, '/');
dbg("open '%s'", devpath);
strlcpy(devpath_real, devpath, sizeof(devpath_real));
remove_trailing_chars(devpath_real, '/');
+ if (devpath[0] == '\0' )
+ return NULL;
/* look for device already in cache (we never put an untranslated path in the cache) */
list_for_each_entry(dev_loop, &dev_list, node) {
/* look for device already in cache (we never put an untranslated path in the cache) */
list_for_each_entry(dev_loop, &dev_list, node) {
@@
-275,14
+287,6
@@
struct sysfs_device *sysfs_device_get_parent(struct sysfs_device *dev)
if (dev->parent != NULL)
return dev->parent;
if (dev->parent != NULL)
return dev->parent;
- /* requesting a parent is only valid for these devpathes */
- if ((strncmp(dev->devpath, "/devices/", 9) != 0) &&
- (strncmp(dev->devpath, "/subsystem/", 11) != 0) &&
- (strncmp(dev->devpath, "/bus/", 5) != 0) &&
- (strncmp(dev->devpath, "/class/", 7) != 0) &&
- (strncmp(dev->devpath, "/block/", 7) != 0))
- return NULL;
-
strlcpy(parent_devpath, dev->devpath, sizeof(parent_devpath));
dbg("'%s'", parent_devpath);
strlcpy(parent_devpath, dev->devpath, sizeof(parent_devpath));
dbg("'%s'", parent_devpath);
diff --git
a/udevinfo.c
b/udevinfo.c
index cda229244d9b59aadaea86d55fca32d098271016..82057de54c566b9dd8469b7c5bf5583c4e888d95 100644
(file)
--- a/
udevinfo.c
+++ b/
udevinfo.c
@@
-413,7
+413,7
@@
int main(int argc, char *argv[], char *envp[])
case ACTION_ATTRIBUTE_WALK:
if (path[0] != '\0') {
if (print_device_chain(path) != 0) {
case ACTION_ATTRIBUTE_WALK:
if (path[0] != '\0') {
if (print_device_chain(path) != 0) {
- fprintf(stderr, "
device not
found\n");
+ fprintf(stderr, "
no valid sysfs device
found\n");
rc = 4;
goto exit;
}
rc = 4;
goto exit;
}
@@
-424,7
+424,7
@@
int main(int argc, char *argv[], char *envp[])
goto exit;
}
if (print_device_chain(udev->dev->devpath) != 0) {
goto exit;
}
if (print_device_chain(udev->dev->devpath) != 0) {
- fprintf(stderr, "
device not
found\n");
+ fprintf(stderr, "
no valid sysfs device
found\n");
rc = 4;
goto exit;
}
rc = 4;
goto exit;
}