[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