diff options
Diffstat (limited to 'libc/include/bits/fortify/socket.h')
-rw-r--r-- | libc/include/bits/fortify/socket.h | 65 |
1 files changed, 1 insertions, 64 deletions
diff --git a/libc/include/bits/fortify/socket.h b/libc/include/bits/fortify/socket.h index 3e610d6ec..3d070c526 100644 --- a/libc/include/bits/fortify/socket.h +++ b/libc/include/bits/fortify/socket.h @@ -39,7 +39,7 @@ ssize_t __recvfrom_chk(int, void*, size_t, size_t, int, struct sockaddr*, #define __recvfrom_bad_size "'recvfrom' called with size bigger than buffer" #define __sendto_bad_size "'sendto' called with size bigger than buffer" -#if defined(__clang__) + #if __ANDROID_API__ >= __ANDROID_API_N__ __BIONIC_FORTIFY_INLINE ssize_t recvfrom(int fd, void* const buf __pass_object_size0, size_t len, int flags, struct sockaddr* src_addr, socklen_t* addr_len) @@ -86,69 +86,6 @@ ssize_t send(int socket, const void* const buf __pass_object_size0, size_t len, return sendto(socket, buf, len, flags, NULL, 0); } -#else /* defined(__clang__) */ -ssize_t __recvfrom_real(int, void*, size_t, int, struct sockaddr*, socklen_t*) __RENAME(recvfrom); -__errordecl(__recvfrom_error, __recvfrom_bad_size); - -extern ssize_t __sendto_real(int, const void*, size_t, int, const struct sockaddr*, socklen_t) - __RENAME(sendto); -__errordecl(__sendto_error, __sendto_bad_size); - -#if __ANDROID_API__ >= __ANDROID_API_N__ -__BIONIC_FORTIFY_INLINE -ssize_t recvfrom(int fd, void* buf, size_t len, int flags, - struct sockaddr* src_addr, socklen_t* addr_len) { - size_t bos = __bos0(buf); - - if (bos == __BIONIC_FORTIFY_UNKNOWN_SIZE) { - return __recvfrom_real(fd, buf, len, flags, src_addr, addr_len); - } - - if (__builtin_constant_p(len) && (len <= bos)) { - return __recvfrom_real(fd, buf, len, flags, src_addr, addr_len); - } - - if (__builtin_constant_p(len) && (len > bos)) { - __recvfrom_error(); - } - - return __recvfrom_chk(fd, buf, len, bos, flags, src_addr, addr_len); -} -#endif /* __ANDROID_API__ >= __ANDROID_API_N__ */ - -#if __ANDROID_API__ >= __ANDROID_API_N_MR1__ -__BIONIC_FORTIFY_INLINE -ssize_t sendto(int fd, const void* buf, size_t len, int flags, - const struct sockaddr* dest_addr, socklen_t addr_len) { - size_t bos = __bos0(buf); - - if (bos == __BIONIC_FORTIFY_UNKNOWN_SIZE) { - return __sendto_real(fd, buf, len, flags, dest_addr, addr_len); - } - - if (__builtin_constant_p(len) && (len <= bos)) { - return __sendto_real(fd, buf, len, flags, dest_addr, addr_len); - } - - if (__builtin_constant_p(len) && (len > bos)) { - __sendto_error(); - } - - return __sendto_chk(fd, buf, len, bos, flags, dest_addr, addr_len); -} -#endif /* __ANDROID_API__ >= __ANDROID_API_N_MR1__ */ - -__BIONIC_FORTIFY_INLINE -ssize_t recv(int socket, void* buf, size_t len, int flags) { - return recvfrom(socket, buf, len, flags, NULL, 0); -} - -__BIONIC_FORTIFY_INLINE -ssize_t send(int socket, const void* buf, size_t len, int flags) { - return sendto(socket, buf, len, flags, NULL, 0); -} -#endif /* defined(__clang__) */ - #undef __recvfrom_bad_size #undef __sendto_bad_size #endif /* __BIONIC_FORTIFY */ |