don't leak a file descriptor

make sure we always close every fd in every possible code path; while
there, also add a log_err if fork(2) failed.
This commit is contained in:
Omar Polo 2021-07-08 09:40:23 +00:00
parent a8a1f43921
commit e7c6502bf3
1 changed files with 6 additions and 0 deletions

6
ex.c
View File

@ -137,6 +137,11 @@ launch_cgi(struct iri *iri, struct cgireq *req, struct vhost *vhost,
switch (fork()) {
case -1:
log_err(NULL, "fork failed: %s", strerror(errno));
close(p[0]);
close(p[1]);
close(errp[0]);
close(errp[1]);
return -1;
case 0: { /* child */
@ -230,6 +235,7 @@ launch_cgi(struct iri *iri, struct cgireq *req, struct vhost *vhost,
default:
close(p[1]);
close(errp[0]);
close(errp[1]);
mark_nonblock(p[0]);
return p[0];