[libc-commits] [libc] cdfdc85 - [libc] Small recvfrom fixes (yaml, unpoison) (#111020)

via libc-commits libc-commits at lists.llvm.org
Thu Oct 3 15:11:09 PDT 2024


Author: Michael Jones
Date: 2024-10-03T15:11:04-07:00
New Revision: cdfdc857cbab0418b7e5116fd4255eb5566588bd

URL: https://github.com/llvm/llvm-project/commit/cdfdc857cbab0418b7e5116fd4255eb5566588bd
DIFF: https://github.com/llvm/llvm-project/commit/cdfdc857cbab0418b7e5116fd4255eb5566588bd.diff

LOG: [libc] Small recvfrom fixes (yaml, unpoison) (#111020)

Forgot to update the newhdrgen yaml (old headergen is fine) and forgot
to unpoison addrlen. This patch fixes those.

Added: 
    

Modified: 
    libc/newhdrgen/yaml/sys/socket.yaml
    libc/src/sys/socket/linux/recv.cpp
    libc/src/sys/socket/linux/recvfrom.cpp
    libc/src/sys/socket/linux/recvmsg.cpp
    libc/src/sys/socket/recv.h
    libc/src/sys/socket/recvfrom.h
    libc/src/sys/socket/recvmsg.h

Removed: 
    


################################################################################
diff  --git a/libc/newhdrgen/yaml/sys/socket.yaml b/libc/newhdrgen/yaml/sys/socket.yaml
index accb4b14099e82..47d835fa5f4a19 100644
--- a/libc/newhdrgen/yaml/sys/socket.yaml
+++ b/libc/newhdrgen/yaml/sys/socket.yaml
@@ -49,7 +49,7 @@ functions:
     return_type: ssize_t
     arguments:
       - type: int
-      - type: const void *
+      - type: void *
       - type: size_t
       - type: int
   - name: recvfrom
@@ -58,18 +58,18 @@ functions:
     return_type: ssize_t
     arguments:
       - type: int
-      - type: const void*
+      - type: void *
       - type: size_t
       - type: int
-      - type: const struct sockaddr *
-      - type: socklen_t
+      - type: struct sockaddr *__restrict
+      - type: socklen_t *__restrict
   - name: recvmsg
     standards:
       - POSIX
     return_type: ssize_t
     arguments:
       - type: int
-      - type: const struct msghdr *
+      - type: struct msghdr *
       - type: int
   - name: send
     standards:

diff  --git a/libc/src/sys/socket/linux/recv.cpp b/libc/src/sys/socket/linux/recv.cpp
index a534dffd0f583f..5e9f2d3233fcf3 100644
--- a/libc/src/sys/socket/linux/recv.cpp
+++ b/libc/src/sys/socket/linux/recv.cpp
@@ -22,7 +22,7 @@
 namespace LIBC_NAMESPACE_DECL {
 
 LLVM_LIBC_FUNCTION(ssize_t, recv,
-                   (int sockfd, const void *buf, size_t len, int flags)) {
+                   (int sockfd, void *buf, size_t len, int flags)) {
 #ifdef SYS_recv
   ssize_t ret =
       LIBC_NAMESPACE::syscall_impl<ssize_t>(SYS_recv, sockfd, buf, len, flags);

diff  --git a/libc/src/sys/socket/linux/recvfrom.cpp b/libc/src/sys/socket/linux/recvfrom.cpp
index fdcaceee8ad293..a0f8278cd5deb4 100644
--- a/libc/src/sys/socket/linux/recvfrom.cpp
+++ b/libc/src/sys/socket/linux/recvfrom.cpp
@@ -22,8 +22,9 @@
 namespace LIBC_NAMESPACE_DECL {
 
 LLVM_LIBC_FUNCTION(ssize_t, recvfrom,
-                   (int sockfd, const void *buf, size_t len, int flags,
-                    const struct sockaddr *dest_addr, socklen_t *addrlen)) {
+                   (int sockfd, void *buf, size_t len, int flags,
+                    struct sockaddr *__restrict dest_addr,
+                    socklen_t *__restrict addrlen)) {
 #ifdef SYS_recvfrom
   ssize_t ret = LIBC_NAMESPACE::syscall_impl<ssize_t>(
       SYS_recvfrom, sockfd, buf, len, flags, dest_addr, addrlen);
@@ -45,6 +46,7 @@ LLVM_LIBC_FUNCTION(ssize_t, recvfrom,
   }
 
   MSAN_UNPOISON(buf, ret);
+  MSAN_UNPOISON(addrlen, sizeof(socklen_t));
 
   return ret;
 }

diff  --git a/libc/src/sys/socket/linux/recvmsg.cpp b/libc/src/sys/socket/linux/recvmsg.cpp
index 59a99210c1a840..60bbc84877b850 100644
--- a/libc/src/sys/socket/linux/recvmsg.cpp
+++ b/libc/src/sys/socket/linux/recvmsg.cpp
@@ -21,7 +21,7 @@
 namespace LIBC_NAMESPACE_DECL {
 
 LLVM_LIBC_FUNCTION(ssize_t, recvmsg,
-                   (int sockfd, const struct msghdr *msg, int flags)) {
+                   (int sockfd, struct msghdr *msg, int flags)) {
 #ifdef SYS_recvmsg
   ssize_t ret =
       LIBC_NAMESPACE::syscall_impl<ssize_t>(SYS_recvmsg, sockfd, msg, flags);

diff  --git a/libc/src/sys/socket/recv.h b/libc/src/sys/socket/recv.h
index 093e8ca9b12304..ea64daa1183feb 100644
--- a/libc/src/sys/socket/recv.h
+++ b/libc/src/sys/socket/recv.h
@@ -14,7 +14,7 @@
 
 namespace LIBC_NAMESPACE_DECL {
 
-ssize_t recv(int sockfd, const void *buf, size_t len, int flags);
+ssize_t recv(int sockfd, void *buf, size_t len, int flags);
 
 } // namespace LIBC_NAMESPACE_DECL
 

diff  --git a/libc/src/sys/socket/recvfrom.h b/libc/src/sys/socket/recvfrom.h
index 40e6cabca043b9..14869802e72563 100644
--- a/libc/src/sys/socket/recvfrom.h
+++ b/libc/src/sys/socket/recvfrom.h
@@ -17,8 +17,9 @@
 
 namespace LIBC_NAMESPACE_DECL {
 
-ssize_t recvfrom(int sockfd, const void *buf, size_t len, int flags,
-                 const struct sockaddr *address, socklen_t *addrlen);
+ssize_t recvfrom(int sockfd, void *buf, size_t len, int flags,
+                 struct sockaddr *__restrict address,
+                 socklen_t *__restrict addrlen);
 
 } // namespace LIBC_NAMESPACE_DECL
 

diff  --git a/libc/src/sys/socket/recvmsg.h b/libc/src/sys/socket/recvmsg.h
index a506fb0ae68fa0..6230136f439b12 100644
--- a/libc/src/sys/socket/recvmsg.h
+++ b/libc/src/sys/socket/recvmsg.h
@@ -15,7 +15,7 @@
 
 namespace LIBC_NAMESPACE_DECL {
 
-ssize_t recvmsg(int sockfd, const struct msghdr *msg, int flags);
+ssize_t recvmsg(int sockfd, struct msghdr *msg, int flags);
 
 } // namespace LIBC_NAMESPACE_DECL
 


        


More information about the libc-commits mailing list