Browse Source

Added set_close_on_exec() calls inside mg_socketpair(), to avoid potential issues with child processes holding the socketpair open via implicitly duplicated file descriptors

Jeremy Friesner 2 years ago
parent
commit
91dae7a675
1 changed files with 4 additions and 0 deletions
  1. 4 0
      src/civetweb.c

+ 4 - 0
src/civetweb.c

@@ -20541,6 +20541,8 @@ mg_socketpair(int * sockA,
 	if (ret == 0) {
 		*sockA = temp[0];
 		*sockB = temp[1];
+		set_close_on_exec(*sockA, NULL, NULL);
+		set_close_on_exec(*sockB, NULL, NULL);
 	}
 	return ret;
 #else
@@ -20566,6 +20568,8 @@ mg_socketpair(int * sockA,
 					closesocket(asock);
 					*sockA = temp[0];
 					*sockB = temp[1];
+					set_close_on_exec(*sockA, NULL, NULL);
+					set_close_on_exec(*sockB, NULL, NULL);
 					return 0;  /* success! */
 				}
 			}