Commit 88e0f6bb authored by jan.koester's avatar jan.koester
Browse files

test

parent e208bb62
Loading
Loading
Loading
Loading
+7 −5
Changes for src/linux/stdlib.cpp: 7 added lines, 5 removed lines.
Original line number Diff line number Diff line
@@ -242,14 +242,16 @@ extern "C" {
                ssize_t n = readlink(out, target, sizeof target - 1);
                if (n < 0) return nullptr;
                target[n] = 0;
                // new rest = target + remaining
                // new rest = target + remaining; the remaining part is
                // empty or starts with '/' (no '/' of its own: a link as
                // the last component must not look like "target/", which
                // the directory check below would refuse for a file)
                size_t remain = strlen(rest + pos);
                if ((size_t)n + 1 + remain >= sizeof rest) { errno = ENAMETOOLONG; return nullptr; }
                if ((size_t)n + remain >= sizeof rest) { errno = ENAMETOOLONG; return nullptr; }
                char tmp[PATH_MAX];
                memcpy(tmp, target, (size_t)n);
                tmp[n] = '/';
                memcpy(tmp + n + 1, rest + pos, remain + 1);
                memcpy(rest, tmp, (size_t)n + 1 + remain + 1);
                memcpy(tmp + n, rest + pos, remain + 1);
                memcpy(rest, tmp, (size_t)n + remain + 1);
                pos = 0;
                if (target[0] == '/') { out[0] = '/'; out[1] = 0; olen = 1; }
                else { olen = prev; out[olen] = 0; }