Enable stack protector to prevent stack buffer overflows. Fix QUIC build _FORTIFY_SOURCE=2 for arcore, note Chrome OS did a simular fix to cl/530360898 no change in functionally This will cost ARCore +274.4k http://go/arcore-size-reports/stack_canary_fortify To know more about how this was tried and sign of see. go/memory-request-stack-canary-fortify-in-arcore go/arcore-fortify-and-jni PiperOrigin-RevId: 686151450
diff --git a/quiche/quic/core/io/socket_posix.inc b/quiche/quic/core/io/socket_posix.inc index 45e54e0..306c2ac 100644 --- a/quiche/quic/core/io/socket_posix.inc +++ b/quiche/quic/core/io/socket_posix.inc
@@ -79,11 +79,22 @@ len, flags); } ssize_t SyscallSend(int sockfd, const void* buf, size_t len, int flags) { - return SyscallWrapper(&::send, sockfd, buf, len, flags); + // When compiled with _FORTIFY_SOURCE, there are two overloads of recv() + // available, which prevents SyscallWrapper from being able to infer its + // template arguments. This currently happens Android ARCore builds. + // Specify the template arguments explicitly as a workaround. + return SyscallWrapper<ssize_t, int, const void*, size_t, int>( + &::send, sockfd, buf, len, flags); } ssize_t SyscallSendTo(int sockfd, const void* buf, size_t len, int flags, const sockaddr* addr, socklen_t addrlen) { - return SyscallWrapper(&::sendto, sockfd, buf, len, flags, addr, addrlen); + // When compiled with _FORTIFY_SOURCE, there are two overloads of recv() + // available, which prevents SyscallWrapper from being able to infer its + // template arguments. This currently happens Android ARCore builds. + // Specify the template arguments explicitly as a workaround. + return SyscallWrapper<ssize_t, int, const void*, size_t, int, + const sockaddr*, socklen_t>( + &::sendto, sockfd, buf, len, flags, addr, addrlen); } // Wrapper of absl::ErrnoToStatus that ensures the `unavailable_error_numbers`