diff options
-rw-r--r-- | libsandbox/canonicalize.c | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/libsandbox/canonicalize.c b/libsandbox/canonicalize.c index 6c9a2d6..f8d32f0 100644 --- a/libsandbox/canonicalize.c +++ b/libsandbox/canonicalize.c @@ -102,10 +102,12 @@ erealpath(const char *name, char *resolved) if (lstat64(rpath, &st)) break; if (S_ISLNK(st.st_mode)) { - ssize_t cnt = readlink(rpath, rpath, SB_PATH_MAX - 1); + char buffer[SB_PATH_MAX]; + ssize_t cnt = readlink(rpath, buffer, SB_PATH_MAX - 1); if (cnt == -1) break; - rpath[cnt] = '\0'; + buffer[cnt] = '\0'; + strcpy(rpath, buffer); if (p) { size_t bytes_left = strlen(p); if (bytes_left >= SB_PATH_MAX) |