X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=udev%2Flib%2Flibudev-util.c;h=9353e8eda792ef2bf9a85ebfd607d84c6ef0fc7c;hb=86b5778857522087e74182f26f0e565adea0c699;hp=55bac9a476c18d6273c90daf014a2ac9be6a69bc;hpb=cabfd8d0b487b856a2a41b9595e310e63674b99f;p=elogind.git diff --git a/udev/lib/libudev-util.c b/udev/lib/libudev-util.c index 55bac9a47..9353e8eda 100644 --- a/udev/lib/libudev-util.c +++ b/udev/lib/libudev-util.c @@ -31,7 +31,7 @@ #include "libudev.h" #include "libudev-private.h" -static ssize_t get_sys_link(struct udev *udev, const char *slink, const char *syspath, char *subsystem, size_t size) +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]; ssize_t len; @@ -48,8 +48,8 @@ static ssize_t get_sys_link(struct udev *udev, const char *slink, const char *sy if (pos == NULL) return -1; pos = &pos[1]; - info(udev, "resolved link to: '%s'\n", pos); - return util_strlcpy(subsystem, pos, size); + dbg(udev, "resolved link to: '%s'\n", pos); + return util_strlcpy(value, pos, size); } ssize_t util_get_sys_subsystem(struct udev *udev, const char *syspath, char *subsystem, size_t size) @@ -114,7 +114,6 @@ size_t util_path_encode(char *s, size_t len) char t[(len * 3)+1]; size_t i, j; - t[0] = '\0'; for (i = 0, j = 0; s[i] != '\0'; i++) { if (s[i] == '/') { memcpy(&t[j], "\\x2f", 4); @@ -127,8 +126,11 @@ size_t util_path_encode(char *s, size_t len) j++; } } - t[j] = '\0'; - strncpy(s, t, len); + if (len == 0) + return j; + i = (j < len - 1) ? j : len - 1; + memcpy(s, t, i); + s[i] = '\0'; return j; }