Browse Source

fix cgi error (file not found) and useless 'unveil' pledge promise

master
prx 2 months ago
parent
commit
f8aff7fe05
  1. 14
      main.c

14
main.c

@ -150,7 +150,7 @@ drop_privileges(const char *user, const char *path)
if (strlen(cgidir) > 0) {
epledge("stdio rpath exec", NULL);
} else {
epledge("stdio rpath unveil", NULL);
epledge("stdio rpath", NULL);
}
#endif
}
@ -299,10 +299,10 @@ void
cgi(const char *cgicmd)
{
/* run cgicmd replacing current process */
execlp(cgicmd, cgicmd, NULL);
/* if execlp is ok, this will never be reached */
execl(cgicmd, cgicmd, NULL);
/* if execl is ok, this will never be reached */
status(42, "Couldn't execute CGI script");
errlog("error when trying to execlp %s", cgicmd);
errlog("error when trying to execl %s", cgicmd);
exit(1);
}
@ -471,11 +471,11 @@ main(int argc, char **argv)
if (docgi) {
/* check if directory is cgidir */
char cgifp[PATH_MAX] = {'\0'};
estrlcpy(cgifp, chroot_dir, sizeof(chroot_dir));
estrlcpy(cgifp, chroot_dir, sizeof(cgifp));
if (cgifp[strlen(cgifp)-1] != '/') {
estrlcat(cgifp, "/", sizeof(chroot_dir));
estrlcat(cgifp, "/", sizeof(cgifp));
}
estrlcat(cgifp, dir, sizeof(chroot_dir));
estrlcat(cgifp, dir, sizeof(cgifp));
if (strcmp(cgifp, cgidir) != 0) {
/* not cgipath, display file content */
goto file_to_stdout;

Loading…
Cancel
Save