]> git.ipfire.org Git - thirdparty/curl.git/commitdiff
lib: introduce `CURL_ACCEPT()`
authorViktor Szakats <commit@vsz.me>
Tue, 9 Sep 2025 08:00:13 +0000 (10:00 +0200)
committerViktor Szakats <commit@vsz.me>
Tue, 9 Sep 2025 13:17:34 +0000 (15:17 +0200)
To avoid overriding the system symbol `accept`, which is a macro on some
systems (AIX), and thus can't be called via the `(function)` PP trick.

It's also problematic to reset such macro to its original value.

Follow-up to 3bb5e58c105d7be450b667858d1b8e7ae3ded555 #17827
Reported-by: Andrew Kirillov
Fixes #18500
Closes #18501
Closes #18502

lib/cf-socket.c
lib/curl_mem_undef.h
lib/curl_setup.h
lib/memdebug.c
lib/memdebug.h
lib/socketpair.c
src/tool_doswin.c

index 7cf1ed2a5ce90b71a32b831c61549a861ada18cd..f449ca36caf73f81900359bdaed5d2b123ec6ef2 100644 (file)
@@ -2116,7 +2116,7 @@ static CURLcode cf_tcp_accept_connect(struct Curl_cfilter *cf,
     s_accepted = accept4(ctx->sock, (struct sockaddr *) &add, &size,
                          SOCK_NONBLOCK | SOCK_CLOEXEC);
 #else
-    s_accepted = accept(ctx->sock, (struct sockaddr *) &add, &size);
+    s_accepted = CURL_ACCEPT(ctx->sock, (struct sockaddr *) &add, &size);
 #endif
   }
 
index 2b0bef111d1304041b79b4fad437a86aa78491b3..b72e529ddeb7fe78d23a5653820c313ef1534542 100644 (file)
@@ -37,7 +37,6 @@
 #endif
 
 #undef socket
-#undef accept
 #ifdef HAVE_ACCEPT4
 #undef accept4
 #endif
index ed328d679e0c6dbb88a7698fb6a6c4084943f0d0..72c118affcc0995d620eaa561f03b2a842b62af9 100644 (file)
@@ -1084,6 +1084,9 @@ CURL_EXTERN ALLOC_FUNC
 #define CURL_FREEADDRINFO(data) \
   curl_dbg_freeaddrinfo(data, __LINE__, __FILE__)
 
+#define CURL_ACCEPT(sock,addr,len) \
+  curl_dbg_accept(sock, addr, len, __LINE__, __FILE__)
+
 #else /* !CURLDEBUG */
 
 #define sclose(x) CURL_SCLOSE(x)
@@ -1092,6 +1095,8 @@ CURL_EXTERN ALLOC_FUNC
 #define CURL_GETADDRINFO getaddrinfo
 #define CURL_FREEADDRINFO freeaddrinfo
 
+#define CURL_ACCEPT accept
+
 #endif /* CURLDEBUG */
 
 /* Some versions of the Android NDK is missing the declaration */
index d063f94c321f12253eb5d5fe126770958c9a4585..c1121713ea342db110cc7af3b2f7269844563122 100644 (file)
@@ -371,7 +371,7 @@ curl_socket_t curl_dbg_accept(curl_socket_t s, void *saddr, void *saddrlen,
   struct sockaddr *addr = (struct sockaddr *)saddr;
   curl_socklen_t *addrlen = (curl_socklen_t *)saddrlen;
 
-  curl_socket_t sockfd = (accept)(s, addr, addrlen);
+  curl_socket_t sockfd = accept(s, addr, addrlen);
 
   if(source && (sockfd != CURL_SOCKET_BAD))
     curl_dbg_log("FD %s:%d accept() = %" FMT_SOCKET_T "\n",
index d8d5f807d7f9654e8885cc123fc1cccb4d876b57..30469b99a50306599a355a22da51d91a68d8f8c3 100644 (file)
@@ -59,9 +59,6 @@
 #undef socket
 #define socket(domain,type,protocol) \
   curl_dbg_socket((int)domain, type, protocol, __LINE__, __FILE__)
-#undef accept /* for those with accept as a macro */
-#define accept(sock,addr,len) \
-  curl_dbg_accept(sock, addr, len, __LINE__, __FILE__)
 #ifdef HAVE_ACCEPT4
 #undef accept4 /* for those with accept4 as a macro */
 #define accept4(sock,addr,len,flags) \
index 93df9071effbba4cadcbc78a18c98c3a3105d930..4151a9bb979a8f0faefadd1b7d31a86f8022d98d 100644 (file)
@@ -201,7 +201,7 @@ int Curl_socketpair(int domain, int type, int protocol,
   pfd[0].events = POLLIN;
   pfd[0].revents = 0;
   (void)Curl_poll(pfd, 1, 1000); /* one second */
-  socks[1] = accept(listener, NULL, NULL);
+  socks[1] = CURL_ACCEPT(listener, NULL, NULL);
   if(socks[1] == CURL_SOCKET_BAD)
     goto error;
   else {
index 2b3233a2770087ec34176a73c86c878e91bbbb73..4ed90ba8c50f4d44d563983262795f9bf9006033 100644 (file)
@@ -765,8 +765,8 @@ static DWORD WINAPI win_stdin_thread_func(void *thread_data)
   SOCKADDR_IN clientAddr;
   int clientAddrLen = sizeof(clientAddr);
 
-  curl_socket_t socket_w = accept(tdata->socket_l, (SOCKADDR*)&clientAddr,
-                                  &clientAddrLen);
+  curl_socket_t socket_w = CURL_ACCEPT(tdata->socket_l, (SOCKADDR*)&clientAddr,
+                                       &clientAddrLen);
 
   if(socket_w == CURL_SOCKET_BAD) {
     errorf("accept error: %08lx", GetLastError());