summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/libudev-util.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/src/libudev-util.c b/src/libudev-util.c
index a795329f7c..7e345f0fb6 100644
--- a/src/libudev-util.c
+++ b/src/libudev-util.c
@@ -56,7 +56,7 @@ int util_resolve_sys_link(struct udev *udev, char *syspath, size_t size)
ssize_t len;
int i;
int back;
- char *base;
+ char *base = NULL;
len = readlink(syspath, link_target, sizeof(link_target));
if (len <= 0 || len == (ssize_t)sizeof(link_target))
@@ -70,9 +70,11 @@ int util_resolve_sys_link(struct udev *udev, char *syspath, size_t size)
for (i = 0; i <= back; i++) {
base = strrchr(syspath, '/');
if (base == NULL)
- return -1;
+ return -EINVAL;
base[0] = '\0';
}
+ if (base == NULL)
+ return -EINVAL;
dbg(udev, "after moving back '%s'\n", syspath);
util_strscpyl(base, size - (base - syspath), "/", &link_target[back * 3], NULL);
return 0;