diff options
author | jilles <jilles@FreeBSD.org> | 2015-05-10 14:50:50 +0000 |
---|---|---|
committer | jilles <jilles@FreeBSD.org> | 2015-05-10 14:50:50 +0000 |
commit | 8ae6fa0eb6d5fbd0626127be3f6d2cd2b3d604f6 (patch) | |
tree | d23dd39cd7c5c54bd6d8420fb92181e752c10a24 /lib/libc/net/send.c | |
parent | ae16c5888fa9049056aa37f505c476a3d071c4c5 (diff) | |
download | FreeBSD-src-8ae6fa0eb6d5fbd0626127be3f6d2cd2b3d604f6.zip FreeBSD-src-8ae6fa0eb6d5fbd0626127be3f6d2cd2b3d604f6.tar.gz |
recv(),send(): Directly call interposing entry instead of going through PLT.
recv() and send()'s calls to recvfrom() and sendto() are much like
waitpid()'s call to wait4(), and likewise need not allow PLT interposing on
the called function.
Diffstat (limited to 'lib/libc/net/send.c')
-rw-r--r-- | lib/libc/net/send.c | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/lib/libc/net/send.c b/lib/libc/net/send.c index 93cdfda..c44f4b9 100644 --- a/lib/libc/net/send.c +++ b/lib/libc/net/send.c @@ -35,6 +35,7 @@ __FBSDID("$FreeBSD$"); #include <sys/types.h> #include <sys/socket.h> +#include "libc_private.h" #include <stddef.h> @@ -48,5 +49,8 @@ send(s, msg, len, flags) * POSIX says send() shall be a cancellation point, so call the * cancellation-enabled sendto() and not _sendto(). */ - return (sendto(s, msg, len, flags, NULL, 0)); + return (((ssize_t (*)(int, const void *, size_t, int, + const struct sockaddr *, socklen_t)) + __libc_interposing[INTERPOS_sendto])(s, msg, len, flags, + NULL, 0)); } |