disallow non-absolute rpath $ORIGIN for suid/sgid/AT_SECURE processes
[musl] / ldso / dynlink.c
index 3741c30..9bf6924 100644 (file)
@@ -817,6 +817,9 @@ static int fixup_rpath(struct dso *p, char *buf, size_t buf_size)
                origin = ".";
                l = 1;
        }
+       /* Disallow non-absolute origins for suid/sgid/AT_SECURE. */
+       if (libc.secure && *origin != '/')
+               return 0;
        p->rpath = malloc(strlen(p->rpath_orig) + n*l + 1);
        if (!p->rpath) return -1;