# 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);