From d1146bb616cf5387123305fdf79319fc46de437c Mon Sep 17 00:00:00 2001 From: Benny Prijono Date: Wed, 5 Dec 2007 05:08:29 +0000 Subject: Fixed run-time error on MacOS X (and possibly BSD based systems) when bind() is called with larger addrlen git-svn-id: http://svn.pjsip.org/repos/pjproject/trunk@1621 74dad513-b988-da41-8d7b-12977e46ad98 --- pjlib/src/pj/sock_bsd.c | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) (limited to 'pjlib/src/pj') diff --git a/pjlib/src/pj/sock_bsd.c b/pjlib/src/pj/sock_bsd.c index 761c03bc..1a6d13f8 100644 --- a/pjlib/src/pj/sock_bsd.c +++ b/pjlib/src/pj/sock_bsd.c @@ -123,6 +123,18 @@ const int PJ_MSG_PEEK = MSG_PEEK; const int PJ_MSG_DONTROUTE = MSG_DONTROUTE; +#if 0 +static void CHECK_ADDR_LEN(const pj_sockaddr *addr, int len) +{ + pj_sockaddr *a = (pj_sockaddr*)addr; + pj_assert((a->addr.sa_family==PJ_AF_INET && len==sizeof(pj_sockaddr_in)) || + (a->addr.sa_family==PJ_AF_INET6 && len==sizeof(pj_sockaddr_in6))); + +} +#else +#define CHECK_ADDR_LEN(addr,len) +#endif + /* * Convert 16-bit value from network byte order to host byte order. */ @@ -449,7 +461,6 @@ PJ_DEF(pj_status_t) pj_sock_socket(int af, } #endif - /* * Bind socket. */ @@ -461,6 +472,8 @@ PJ_DEF(pj_status_t) pj_sock_bind( pj_sock_t sock, PJ_ASSERT_RETURN(addr && len >= (int)sizeof(struct sockaddr_in), PJ_EINVAL); + CHECK_ADDR_LEN(addr, len); + if (bind(sock, (struct sockaddr*)addr, len) != 0) return PJ_RETURN_OS_ERROR(pj_get_native_netos_error()); else @@ -574,6 +587,8 @@ PJ_DEF(pj_status_t) pj_sock_sendto(pj_sock_t sock, { PJ_CHECK_STACK(); PJ_ASSERT_RETURN(len, PJ_EINVAL); + + CHECK_ADDR_LEN(to, tolen); *len = sendto(sock, (const char*)buf, *len, flags, (const struct sockaddr*)to, tolen); -- cgit v1.2.3