# HG changeset patch # User Vadim Lebedev # Date 1311862206 -7200 # Node ID a915b031414cc745f4b794057979c8a433b042d1 # Parent c3d41be5f08d9d3f175425829f1b9c53cff89aea ortp COVERITY fixes diff -r c3d41be5f08d -r a915b031414c oRTP/src/rtpsession.c --- a/oRTP/src/rtpsession.c Thu Jul 28 15:59:51 2011 +0200 +++ b/oRTP/src/rtpsession.c Thu Jul 28 16:10:06 2011 +0200 @@ -1272,8 +1272,8 @@ * Closes the rtp and rtcp sockets. **/ void rtp_session_release_sockets(RtpSession *session){ - if (session->rtp.socket>=0) close_socket (session->rtp.socket); - if (session->rtcp.socket>=0) close_socket (session->rtcp.socket); + if (!rtp_session_using_transport(session, rtp) && sockisvalid(session->rtp.socket)) close_socket (session->rtp.socket); + if (!rtp_session_using_transport(session, rtcp) && sockisvalid(session->rtcp.socket)) close_socket (session->rtcp.socket); session->rtp.socket=-1; session->rtcp.socket=-1; diff -r c3d41be5f08d -r a915b031414c oRTP/src/rtpsession_inet.c --- a/oRTP/src/rtpsession_inet.c Thu Jul 28 15:59:51 2011 +0200 +++ b/oRTP/src/rtpsession_inet.c Thu Jul 28 16:10:06 2011 +0200 @@ -27,6 +27,9 @@ #include "ortp-config-win32.h" #else #include "ortp-config.h" /*needed for HAVE_SYS_UIO_H */ +#include +#include +#include #endif #ifdef HAVE_SYS_UIO_H @@ -247,7 +250,7 @@ ortp_socket_t sock; int sockfamily; bool_t reuse_addr; - if (session->rtp.socket>=0){ + if (sockisvalid(session->rtp.socket)){ /* don't rebind, but close before*/ rtp_session_release_sockets(session); } @@ -304,7 +307,7 @@ if (ttl>0) session->multicast_ttl = ttl; // Don't do anything if socket hasn't been created yet - if (session->rtp.socket < 0) return 0; + if (!sockisvalid(session->rtp.socket)) return 0; switch (session->rtp.sockfamily) { case AF_INET: { @@ -380,7 +383,7 @@ } // Don't do anything if socket hasn't been created yet - if (session->rtp.socket < 0) return 0; + if (!sockisvalid(session->rtp.socket)) return 0; switch (session->rtp.sockfamily) { case AF_INET: { @@ -449,7 +452,7 @@ if (dscp>=0) session->dscp = dscp; // Don't do anything if socket hasn't been created yet - if (session->rtp.socket < 0) return 0; + if (!sockisvalid(session->rtp.socket)) return 0; // DSCP value is in the upper six bits of the TOS field tos = (session->dscp << 2) & 0xFC; @@ -646,7 +649,7 @@ if (can_connect(session)){ if (try_connect(session->rtp.socket,(struct sockaddr*)&session->rtp.rem_addr,session->rtp.rem_addrlen)) session->flags|=RTP_SOCKET_CONNECTED; - if (session->rtcp.socket>=0){ + if (sockisvalid(session->rtcp.socket)){ if (try_connect(session->rtcp.socket,(struct sockaddr*)&session->rtcp.rem_addr,session->rtcp.rem_addrlen)) session->flags|=RTCP_SOCKET_CONNECTED; } @@ -729,10 +732,10 @@ return; } - if (session->rtp.socket>=0){ + if (sockisvalid(session->rtp.socket)){ while (recvfrom(session->rtp.socket,(char*)trash,sizeof(trash),0,(struct sockaddr *)&from,&fromlen)>0){}; } - if (session->rtcp.socket>=0){ + if (sockisvalid(session->rtcp.socket)){ while (recvfrom(session->rtcp.socket,(char*)trash,sizeof(trash),0,(struct sockaddr*)&from,&fromlen)>0){}; } } @@ -857,7 +860,7 @@ } if (session->rtcp.enabled && - ( (sockfd>=0 && (session->rtcp.rem_addrlen>0 ||using_connected_socket)) + ( (sockisvalid(sockfd) && (session->rtcp.rem_addrlen>0 ||using_connected_socket)) || rtp_session_using_transport(session, rtcp) ) ){ if (rtp_session_using_transport(session, rtcp)){ error = (session->rtcp.tr->t_sendto) (session->rtcp.tr, m, 0, @@ -899,7 +902,7 @@ socklen_t addrlen = sizeof (remaddr); mblk_t *mp; - if ((sockfd<0) && !rtp_session_using_transport(session, rtp)) return -1; /*session has no sockets for the moment*/ + if (!sockisvalid(sockfd) && !rtp_session_using_transport(session, rtp)) return -1; /*session has no sockets for the moment*/ while (1) { @@ -982,7 +985,7 @@ socklen_t addrlen=0; mblk_t *mp; - if (session->rtcp.socket<0 && !rtp_session_using_transport(session, rtcp)) return -1; /*session has no rtcp sockets for the moment*/ + if (!sockisvalid(session->rtcp.socket) && !rtp_session_using_transport(session, rtcp)) return -1; /*session has no rtcp sockets for the moment*/ while (1) diff -r c3d41be5f08d -r a915b031414c oRTP/src/stun.c --- a/oRTP/src/stun.c Thu Jul 28 15:59:51 2011 +0200 +++ b/oRTP/src/stun.c Thu Jul 28 16:10:06 2011 +0200 @@ -199,7 +199,7 @@ static bool_t stunParseAtrUnknown( char* body, unsigned int hdrLen, StunAtrUnknown *result ) { - if ( hdrLen >= sizeof(result) ) + if ( hdrLen >= sizeof(*result) ) { ortp_error("stun: Incorrect size for SA_UNKNOWNATTRIBUTE"); return FALSE; @@ -254,7 +254,7 @@ static bool_t turnParseAtrChannelNumber( char* body, unsigned int hdrLen, TurnAtrChannelNumber *result ) { - if ( hdrLen >= sizeof(result) ) + if ( hdrLen >= sizeof(*result) ) { ortp_error("stun: Incorrect size for TA_CHANNELNUMBER"); return FALSE; @@ -275,7 +275,7 @@ static bool_t turnParseAtrLifetime( char* body, unsigned int hdrLen, TurnAtrLifetime *result ) { - if ( hdrLen != sizeof(result) ) + if ( hdrLen != sizeof(*result) ) { ortp_error("stun: Incorrect size for TA_LIFETIME"); return FALSE; @@ -399,7 +399,7 @@ char* body; unsigned int size; ortp_debug("stun: Received stun message: %i bytes\n", bufLen); - memset(msg, 0, sizeof(msg)); + memset(msg, 0, sizeof(*msg)); if (sizeof(StunMsgHdr) > bufLen) { diff -r c3d41be5f08d -r a915b031414c oRTP/src/utils.h --- a/oRTP/src/utils.h Thu Jul 28 15:59:51 2011 +0200 +++ b/oRTP/src/utils.h Thu Jul 28 16:10:06 2011 +0200 @@ -82,8 +82,10 @@ #if defined(WIN32) || defined(_WIN32_WCE) #define is_would_block_error(errnum) (errnum==WSAEWOULDBLOCK) +#define sockisvalid(s) (s != ~0) #else #define is_would_block_error(errnum) (errnum==EWOULDBLOCK || errnum==EAGAIN) +#define sockisvalid(s) ((s) >= 0) #endif void ortp_ev_queue_put(OrtpEvQueue *q, OrtpEvent *ev);