summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKay Sievers <kay.sievers@vrfy.org>2010-12-09 21:08:19 +0100
committerKay Sievers <kay.sievers@vrfy.org>2010-12-10 01:18:14 +0100
commit8ba13ec1cd00b86001b4344aec11ae0a64395f7b (patch)
tree0ab102ffa152c4e184e106a34d1a23744e5f44e0
parent329239f506df62df931a063a752dbbb4da0ebb5c (diff)
downloadsystemd-8ba13ec1cd00b86001b4344aec11ae0a64395f7b.tar.gz
libudev: do not overwrite path with readlink() call
-rw-r--r--libudev/libudev-util.c9
1 files changed, 5 insertions, 4 deletions
diff --git a/libudev/libudev-util.c b/libudev/libudev-util.c
index 030b78cd22..6c309afd05 100644
--- a/libudev/libudev-util.c
+++ b/libudev/libudev-util.c
@@ -26,15 +26,16 @@
static ssize_t get_sys_link(struct udev *udev, const char *slink, const char *syspath, char *value, size_t size)
{
char path[UTIL_PATH_SIZE];
+ char target[UTIL_PATH_SIZE];
ssize_t len;
const char *pos;
util_strscpyl(path, sizeof(path), syspath, "/", slink, NULL);
- len = readlink(path, path, sizeof(path));
- if (len <= 0 || len == (ssize_t)sizeof(path))
+ len = readlink(path, target, sizeof(target));
+ if (len <= 0 || len == (ssize_t)sizeof(target))
return -1;
- path[len] = '\0';
- pos = strrchr(path, '/');
+ target[len] = '\0';
+ pos = strrchr(target, '/');
if (pos == NULL)
return -1;
pos = &pos[1];