enable SOCK_CLOEXEC explicit

leaking here means fork/vfork will duplicate fd without O_CLOEXEC flag
to the child process.

Signed-off-by: wanggang26 <wanggang26@xiaomi.com>
This commit is contained in:
wanggang26 2023-11-24 10:44:50 +08:00 • committed by Xiang Xiao
parent 3f0c9306d3
commit eab2cba4a1
20 changed files with 56 additions and 30 deletions

View file

@ -182,7 +182,7 @@ static inline bool net_connection(struct net_listener_s *nls)
printf("lo_listener: Accepting new connection on sd=%d\n",
nls->listensd);
sd = accept(nls->listensd, NULL, NULL);
sd = accept4(nls->listensd, NULL, NULL, SOCK_CLOEXEC);
if (sd < 0)
{
printf("lo_listener: accept failed: %d\n", errno);

View file

@ -145,7 +145,12 @@ void nettest_server(void)
printf("server: Accepting connections on port %d\n",
CONFIG_EXAMPLES_NETTEST_SERVER_PORTNO);
#ifdef __APPLE__
acceptsd = accept(listensd, (struct sockaddr *)&myaddr, &addrlen);
#else
acceptsd = accept4(listensd, (struct sockaddr *)&myaddr, &addrlen,
SOCK_CLOEXEC);
#endif
if (acceptsd < 0)
{
printf("server: accept failure: %d\n", errno);

View file

@ -182,7 +182,7 @@ static inline bool net_connection(struct net_listener_s *nls)
printf("net_listener: Accepting new connection on sd=%d\n",
nls->listensd);
sd = accept(nls->listensd, NULL, NULL);
sd = accept4(nls->listensd, NULL, NULL, SOCK_CLOEXEC);
if (sd < 0)
{
printf("net_listener: accept failed: %d\n", errno);

View file

@ -278,7 +278,8 @@ void *net_reader(pthread_addr_t pvarg)
printf("net_reader: Accepting new connections on port %d\n",
LISTENER_PORT);
addrlen = sizeof(struct sockaddr_in);
acceptsd = accept(listensd, (struct sockaddr *)&addr, &addrlen);
acceptsd = accept4(listensd, (struct sockaddr *)&addr, &addrlen,
SOCK_CLOEXEC);
if (acceptsd < 0)
{
printf("net_reader: accept failure: %d\n", errno);

View file

@ -238,7 +238,8 @@ static int rpsock_stream_server(int argc, char *argv[])
}
printf("server: try accept ...\n");
new = accept(listensd, (struct sockaddr *)&myaddr, &addrlen);
new = accept4(listensd, (struct sockaddr *)&myaddr, &addrlen,
SOCK_CLOEXEC);
if (new < 0)
break;

View file

@ -243,9 +243,9 @@ int main(int argc, char *argv[])
/* Wait for a new client socket connection */
addr_size = sizeof server_storage;
new_socket_client_fd = accept(socket_server_fd,
(struct sockaddr *)&server_storage,
&addr_size);
new_socket_client_fd = accept4(socket_server_fd,
(struct sockaddr *)&server_storage,
&addr_size, SOCK_CLOEXEC);
if (new_socket_client_fd < 0)
{

View file

@ -153,7 +153,12 @@ void tcpblaster_server(void)
printf("server: Accepting connections on port %d\n",
CONFIG_EXAMPLES_TCPBLASTER_SERVER_PORTNO);
#ifdef __APPLE__
acceptsd = accept(listensd, (FAR struct sockaddr *)&myaddr, &addrlen);
#else
acceptsd = accept4(listensd, (FAR struct sockaddr *)&myaddr, &addrlen,
SOCK_CLOEXEC);
#endif
if (acceptsd < 0)
{
printf("server: accept failure: %d\n", errno);

View file

@ -244,7 +244,8 @@ static int tcpecho_server(void)
/* new client connection */
clilen = sizeof(cliaddr);
connfd = accept(listenfd, (struct sockaddr *)&cliaddr, &clilen);
connfd = accept4(listenfd, (struct sockaddr *)&cliaddr, &clilen,
SOCK_CLOEXEC);
ninfo("new client: %s\n",
inet_ntoa_r(cliaddr.sin_addr, inetaddr, sizeof(inetaddr)));

View file

@ -132,7 +132,8 @@ int main(int argc, char *argv[])
}
#endif
acceptsd = accept(listensd, (struct sockaddr *)&myaddr, &addrlen);
acceptsd = accept4(listensd, (struct sockaddr *)&myaddr, &addrlen,
SOCK_CLOEXEC);
if (acceptsd < 0)
{
printf("server: accept failure: %d\n", errno);

View file

@ -410,7 +410,8 @@ int main(int argc, FAR char *argv[])
for (; ; )
{
clilen = sizeof(cliaddr);
connfd = accept(listenfd, (struct sockaddr *)&cliaddr, &clilen);
connfd = accept4(listenfd, (struct sockaddr *)&cliaddr, &clilen,
SOCK_CLOEXEC);
if (connfd <= 0)
{
break;