updated SIPp to 3.1, which fixes CVE-2008-1959
patch-ae has been added as a fix for CVE-2008-2085
This commit is contained in:
parent
a4fe9f2c9f
commit
9c8d29fe17
8 changed files with 193 additions and 123 deletions
|
@ -1,7 +1,7 @@
|
|||
# $NetBSD: Makefile,v 1.6 2006/11/11 11:31:06 shattered Exp $
|
||||
# $NetBSD: Makefile,v 1.7 2008/07/12 15:08:48 gschwarz Exp $
|
||||
|
||||
DISTNAME= sipp.1.0
|
||||
PKGNAME= sipp-1.0
|
||||
DISTNAME= sipp.3.1.src
|
||||
PKGNAME= sipp-3.1
|
||||
CATEGORIES= net
|
||||
MASTER_SITES= ${MASTER_SITE_SOURCEFORGE:=sipp/}
|
||||
|
||||
|
@ -9,7 +9,7 @@ MAINTAINER= schwarz@NetBSD.org
|
|||
HOMEPAGE= http://sipp.sourceforge.net/
|
||||
COMMENT= SIPp is a free Open Source SIP test tool/traffic generator
|
||||
|
||||
WRKSRC= ${WRKDIR}/sipp
|
||||
WRKSRC= ${WRKDIR}/sipp.svn
|
||||
NO_CONFIGURE= yes
|
||||
USE_TOOLS+= gmake
|
||||
USE_LANGUAGES= c c++
|
||||
|
|
|
@ -1 +0,0 @@
|
|||
- This package has known vulnerabilities, please investigate and fix if possible. (see: CVE-2008-1959, CVE-2008-2085).
|
|
@ -1,9 +1,10 @@
|
|||
$NetBSD: distinfo,v 1.4 2006/06/03 18:25:44 gschwarz Exp $
|
||||
$NetBSD: distinfo,v 1.5 2008/07/12 15:08:48 gschwarz Exp $
|
||||
|
||||
SHA1 (sipp.1.0.tar.gz) = d9d75fc5a3d238bec8e3975870ef9da162ed2447
|
||||
RMD160 (sipp.1.0.tar.gz) = cfbbc1f40371a8e5bfb276e595f51d84dde78952
|
||||
Size (sipp.1.0.tar.gz) = 69330 bytes
|
||||
SHA1 (patch-aa) = 78ce8762b43a2f94d4807f7f4bbbb2d4e37612a7
|
||||
SHA1 (patch-ab) = 8d94bbbc21898bb4da5fc9ad855428484b1cfbe0
|
||||
SHA1 (patch-ac) = 0afa1c52cacf764ae2aedfe3ed3bf8da09f554d6
|
||||
SHA1 (patch-ad) = ae432d5ea09b2ef235221a9fb0e134c250f8ae35
|
||||
SHA1 (sipp.3.1.src.tar.gz) = 781e50a74844abbdff1b90781fa24d062f0c1352
|
||||
RMD160 (sipp.3.1.src.tar.gz) = bd89c94b3a006fdc5717d43765776901976dbf71
|
||||
Size (sipp.3.1.src.tar.gz) = 9428792 bytes
|
||||
SHA1 (patch-aa) = 236ab7c683b5568802504aecebfe4730c9af04c1
|
||||
SHA1 (patch-ab) = af7df29abfc0ae49e2e52a138e3a0c5c156b2a30
|
||||
SHA1 (patch-ac) = 16ecd2344318b4af570cc062bf357dfde0676831
|
||||
SHA1 (patch-ad) = c5927fd3026bccc344e9a0b095435b5a3dd72aa0
|
||||
SHA1 (patch-ae) = 2ec35d0077019a3cb0915e1f428750b0eee4aea7
|
||||
|
|
|
@ -1,10 +1,10 @@
|
|||
$NetBSD: patch-aa,v 1.4 2006/06/03 18:25:47 gschwarz Exp $
|
||||
$NetBSD: patch-aa,v 1.5 2008/07/12 15:08:48 gschwarz Exp $
|
||||
|
||||
--- Makefile.orig 2004-09-20 15:30:03.000000000 +0000
|
||||
+++ Makefile
|
||||
@@ -28,14 +28,6 @@ OBJ= xp_parser.o scenario.o screen.o cal
|
||||
# Include directories
|
||||
INCDIR= -I.
|
||||
--- Makefile.orig 2008-04-11 14:26:37.000000000 +0200
|
||||
+++ Makefile 2008-07-12 16:35:34.000000000 +0200
|
||||
@@ -29,15 +29,6 @@
|
||||
OBJ= xp_parser.o message.o scenario.o screen.o call.o comp.o sipp.o stat.o \
|
||||
actions.o variables.o infile.o deadcall.o task.o socketowner.o listener.o
|
||||
|
||||
-# Libraries directories
|
||||
-LIBDIR_linux=
|
||||
|
@ -13,11 +13,12 @@ $NetBSD: patch-aa,v 1.4 2006/06/03 18:25:47 gschwarz Exp $
|
|||
-LIBDIR_tru64=
|
||||
-LIBDIR_SunOS=
|
||||
-LIBDIR_Cygwin=
|
||||
-LIBDIR_Darwin=
|
||||
-
|
||||
# Archive file created in your home directory when building the archive target
|
||||
# ARCHIVE= $(HOME)/$(OUTPUT).tgz
|
||||
ARCHIVE= $(OUTPUT).tgz
|
||||
@@ -47,99 +39,16 @@ TOCLEAN= sipp_errors.log sipp_messages.l
|
||||
@@ -49,102 +40,9 @@
|
||||
|
||||
###################################################################
|
||||
# Generic Rules
|
||||
|
@ -32,24 +33,27 @@ $NetBSD: patch-aa,v 1.4 2006/06/03 18:25:47 gschwarz Exp $
|
|||
-SYSTEM_OSF1=tru64
|
||||
-SYSTEM_SunOS=SunOS
|
||||
-SYSTEM_CYGWIN=Cygwin
|
||||
-SYSTEM_Darwin=Darwin
|
||||
-SYSTEM=$(SYSTEM_$(OSNAME))
|
||||
-
|
||||
-# C compiler
|
||||
-CC_hpux=aCC
|
||||
-CC_linux=cc
|
||||
-CC_hpux=aCC
|
||||
-CC_linux=gcc
|
||||
-CC_freebsd=cc
|
||||
-CC_tru64=cc
|
||||
-CC_SunOS=gcc
|
||||
-CC_Cygwin=cc
|
||||
-CC_Darwin=cc
|
||||
-CC=$(CC_$(SYSTEM))
|
||||
-
|
||||
-# C++ compiler mapping
|
||||
-CPP_hpux=aCC
|
||||
-CPP_linux=gcc
|
||||
-CPP_linux=g++
|
||||
-CPP_freebsd=g++
|
||||
-CPP_tru64=cxx
|
||||
-CPP_SunOS=gcc
|
||||
-CPP_SunOS=g++
|
||||
-CPP_Cygwin=g++
|
||||
-CPP_Darwin=g++
|
||||
-CPP=$(CPP_$(SYSTEM))
|
||||
-
|
||||
-#Model specific flags
|
||||
|
@ -60,25 +64,30 @@ $NetBSD: patch-aa,v 1.4 2006/06/03 18:25:47 gschwarz Exp $
|
|||
-MFLAGS_i586=
|
||||
-MFLAGS_i486=
|
||||
-MFLAGS_i386=
|
||||
-MFLAGS_ppc=
|
||||
-MFLAGS=$(MFLAGS_$(MODELNAME))
|
||||
-
|
||||
-#C Compiler Flags
|
||||
-CFLAGS_hpux=-D__HPUX
|
||||
-CFLAGS_linux=-D__LINUX -pthread
|
||||
-# supress warning #829 (Implicit conversion of string literal to
|
||||
-#'char *' is deprecated) since this is both common and harmless
|
||||
-CFLAGS_hpux=-D__HPUX -DPROTOTYPES +W829
|
||||
-CFLAGS_linux=-D__LINUX -pthread
|
||||
-CFLAGS_freebsd=-D__LINUX -pthread
|
||||
-CFLAGS_tru64=-D__OSF1 -pthread
|
||||
-CFLAGS_SunOS=-g
|
||||
-CFLAGS_Cygwin=-D__CYGWIN
|
||||
-CFLAGS=$(CFLAGS_$(SYSTEM)) -D__3PCC__
|
||||
-CFLAGS_SunOS=${DEBUG_FLAGS} -D__SUNOS
|
||||
-CFLAGS_Cygwin=-D__CYGWIN -Dsocklen_t=int
|
||||
-CFLAGS_Darwin=-D__DARWIN
|
||||
-CFLAGS=$(CFLAGS_$(SYSTEM)) $(VERINFO) $(TLS) $(PCAPPLAY) $(EXTRACFLAGS)
|
||||
-
|
||||
-#C++ Compiler Flags
|
||||
-CPPFLAGS_hpux=-AA -mt -D__HPUX
|
||||
-CPPFLAGS_linux=-D__LINUX -pthread
|
||||
-CPPFLAGS_hpux=-AA -mt -D__HPUX -D_INCLUDE_LONGLONG -DNOMACROS +W829
|
||||
-CPPFLAGS_linux=-D__LINUX -pthread
|
||||
-CPPFLAGS_freebsd=-D__LINUX -pthread
|
||||
-CPPFLAGS_tru64=-D__OSF1 -pthread
|
||||
-CPPFLAGS_SunOS=-g
|
||||
-CPPFLAGS_Cygwin=-D__CYGWIN
|
||||
-CPPFLAGS=$(CPPFLAGS_$(SYSTEM)) -D__3PCC__
|
||||
-CPPFLAGS_SunOS=${DEBUG_FLAGS} -D__SUNOS
|
||||
-CPPFLAGS_Cygwin=-D__CYGWIN -Dsocklen_t=int
|
||||
-CPPFLAGS_Darwin=-D__DARWIN
|
||||
-CPPFLAGS=$(CPPFLAGS_$(SYSTEM)) $(VERINFO) $(TLS) $(PCAPPLAY) $(EXTRACPPFLAGS)
|
||||
-
|
||||
-#Linker mapping
|
||||
-CCLINK_hpux=aCC
|
||||
|
@ -87,53 +96,64 @@ $NetBSD: patch-aa,v 1.4 2006/06/03 18:25:47 gschwarz Exp $
|
|||
-CCLINK_tru64=cxx
|
||||
-CCLINK_SunOS=gcc
|
||||
-CCLINK_Cygwin=g++
|
||||
-CCLINK_Darwin=g++
|
||||
-CCLINK=$(CCLINK_$(SYSTEM))
|
||||
-
|
||||
#Linker Flags
|
||||
-#Linker Flags
|
||||
-LFLAGS_hpux=-AA -mt
|
||||
-LFLAGS_linux=
|
||||
-LFLAGS_freebsd=
|
||||
-LFLAGS_tru64=
|
||||
-LFLAGS_SunOS=
|
||||
-LFLAGS_SunOS=-mt ${DEBUG_FLAGS}
|
||||
-LFLAGS_Cygwin=
|
||||
-LFLAGS=$(LFLAGS_$(SYSTEM))
|
||||
-LFLAGS_Darwin=
|
||||
-LFLAGS=$(LFLAGS_$(SYSTEM)) $(EXTRALFLAGS)
|
||||
-
|
||||
-#Link Libraries
|
||||
-LIBS_linux= -ldl -lpthread -lcurses -lstdc++
|
||||
-LIBS_hpux= -lcurses
|
||||
-LIBS_linux= -ldl -lpthread -lncurses -lstdc++ -lm -L /usr/local/lib -L /usr/lib -L /usr/lib64
|
||||
-LIBS_hpux= -lcurses -lpthread -L /opt/openssl/lib -L /usr/local/lib
|
||||
-LIBS_tru64= -lcurses -lpthread
|
||||
-LIBS_freebsd= -lcurses -pthread
|
||||
-LIBS_SunOS= -lcurses -lpthread -lnsl -lsocket -lstdc++ -ldl
|
||||
-LIBS_Cygwin= -lcurses -lpthread -lstdc++
|
||||
-LIBS=$(LIBS_$(SYSTEM))
|
||||
-LIBS_freebsd= -lcurses -pthread -L /usr/local/lib
|
||||
-LIBS_SunOS= -lcurses -lpthread -lnsl -lsocket -Wl,-Bstatic -lstdc++ -Wl,-Bdynamic -lm -ldl -L /usr/local/ssl/lib/
|
||||
-LIBS_Cygwin= -lcurses -lpthread -lstdc++ -L /usr/lib/WpdPack/Lib
|
||||
-LIBS_Darwin= -lcurses
|
||||
-LIBS=$(LIBS_$(SYSTEM)) $(EXTRALIBS)
|
||||
+LDFLAGS+= ${PTHREAD_LDFLAGS} ${DL_FLAGS}
|
||||
+LIBS.SunOS= -lnsl -lsocket
|
||||
+LIBS+= -lncurses ${PTHREAD_LIBS} ${LIBS.${OPSYS}} ${DL_LIBS}
|
||||
|
||||
# Operating system detection rule
|
||||
# Include directories
|
||||
INCDIR_linux=-I. -I/usr/include/openssl
|
||||
@@ -159,8 +57,7 @@
|
||||
-include local.mk
|
||||
|
||||
# Building without TLS and authentication (no openssl pre-requisite)
|
||||
-all:
|
||||
- make OSNAME=`uname|sed -e "s/CYGWIN.*/CYGWIN/"` MODELNAME=`uname -m` $(OUTPUT)
|
||||
- make OSNAME=`uname|sed -e "s/CYGWIN.*/CYGWIN/"` MODELNAME=`uname -m|sed "s/Power Macintosh/ppc/"` $(OUTPUT)
|
||||
+all: ${OUTPUT}
|
||||
|
||||
$(OUTPUT): $(OBJ)
|
||||
# Building with TLS and authentication
|
||||
ossl:
|
||||
@@ -186,7 +83,7 @@
|
||||
make OSNAME=`uname|sed -e "s/CYGWIN.*/CYGWIN/"` MODELNAME=`uname -m|sed "s/Power Macintosh/ppc/"` OBJ_TLS="auth.o sslinit.o sslthreadsafe.o milenage.o rijndael.o" TLS_LIBS="-lssl -lcrypto" TLS="-D_USE_OPENSSL -DOPENSSL_NO_KRB5" OBJ_PCAPPLAY="send_packets.o prepare_pcap.o" PCAPPLAY_LIBS="-lwpcap" PCAPPLAY="-DPCAPPLAY" $(OUTPUT)
|
||||
|
||||
$(OUTPUT): $(OBJ_TLS) $(OBJ_PCAPPLAY) $(OBJ)
|
||||
- $(CCLINK) $(LFLAGS) $(MFLAGS) $(LIBDIR_$(SYSTEM)) \
|
||||
- $(DEBUG_FLAGS) -o $@ $(OBJ) $(LIBS)
|
||||
+ $(CXX) $(LDFLAGS) $(DEBUG_FLAGS) -o $@ $(OBJ) $(LIBS)
|
||||
+ $(CXX) $(LFLAGS) \
|
||||
$(DEBUG_FLAGS) -o $@ $(OBJ_TLS) $(OBJ_PCAPPLAY) $(OBJ) $(LIBS) $(TLS_LIBS) $(PCAPPLAY_LIBS) $(EXTRAENDLIBS)
|
||||
|
||||
debug:
|
||||
DEBUG_FLAGS="-g -pg" ; export DEBUG_FLAGS ; make all
|
||||
@@ -163,11 +72,11 @@ archive:
|
||||
@@ -217,10 +114,10 @@
|
||||
*.o: *.h *.hpp
|
||||
|
||||
.C.o:
|
||||
- $(CPP) $(CPPFLAGS) $(MFLAGS) $(DEBUG_FLAGS) $(INCDIR) -c -o $*.o $<
|
||||
+ $(CXX) $(CXXFLAGS) $(DEBUG_FLAGS) $(INCDIR) -c -o $@ $<
|
||||
- $(CPP) $(CPPFLAGS) $(MFLAGS) $(DEBUG_FLAGS) $(_HPUX_LI_FLAG) $(INCDIR) -c -o $*.o $<
|
||||
+ $(CXX) $(CPPFLAGS) $(DEBUG_FLAGS) $(_HPUX_LI_FLAG) $(INCDIR) -c -o $*.o $<
|
||||
|
||||
.cpp.o:
|
||||
- $(CPP) $(CPPFLAGS) $(MFLAGS) $(DEBUG_FLAGS) $(INCDIR) -c -o $*.o $<
|
||||
+ $(CXX) $(CXXFLAGS) $(DEBUG_FLAGS) $(INCDIR) -c -o $@ $<
|
||||
- $(CPP) $(CPPFLAGS) $(MFLAGS) $(DEBUG_FLAGS) $(_HPUX_LI_FLAG) $(INCDIR) -c -o $*.o $<
|
||||
+ $(CXX) $(CPPFLAGS) $(DEBUG_FLAGS) $(_HPUX_LI_FLAG) $(INCDIR) -c -o $*.o $<
|
||||
|
||||
.c.o:
|
||||
- $(CC) $(CFLAGS) $(MFLAGS) $(DEBUG_FLAGS) $(INCDIR) -c -o $*.o $<
|
||||
+ $(CC) $(CFLAGS) $(DEBUG_FLAGS) $(INCDIR) -c -o $@ $<
|
||||
|
||||
- $(CC) $(CFLAGS) $(MFLAGS) $(DEBUG_FLAGS) $(_HPUX_LI_FLAG) $(INCDIR) -c -o $*.o $<
|
||||
+ $(CC) $(CFLAGS) $(DEBUG_FLAGS) $(_HPUX_LI_FLAG) $(INCDIR) -c -o $*.o $<
|
||||
|
|
|
@ -1,13 +1,13 @@
|
|||
$NetBSD: patch-ab,v 1.1 2005/11/19 21:26:23 gschwarz Exp $
|
||||
$NetBSD: patch-ab,v 1.2 2008/07/12 15:08:48 gschwarz Exp $
|
||||
|
||||
--- call.cpp.orig 2005-11-19 00:38:47.000000000 +0100
|
||||
+++ call.cpp 2005-11-19 00:39:55.000000000 +0100
|
||||
@@ -249,7 +249,7 @@
|
||||
|
||||
getsockname(call_socket,
|
||||
(sockaddr *)(void *)&saddr,
|
||||
- &len);
|
||||
+ (socklen_t *) &len);
|
||||
#ifdef __hpux
|
||||
call_port = saddr.sin_port;
|
||||
#else
|
||||
--- xp_parser.c.orig 2008-07-12 16:09:47.000000000 +0200
|
||||
+++ xp_parser.c 2008-07-12 16:10:02.000000000 +0200
|
||||
@@ -37,7 +37,7 @@
|
||||
#include <string.h>
|
||||
#include <ctype.h>
|
||||
|
||||
-#include <xp_parser.h>
|
||||
+#include "xp_parser.h"
|
||||
|
||||
/************* Constants and Global variables ***********/
|
||||
|
||||
|
|
|
@ -1,49 +1,13 @@
|
|||
$NetBSD: patch-ac,v 1.1 2005/11/19 21:26:23 gschwarz Exp $
|
||||
$NetBSD: patch-ac,v 1.2 2008/07/12 15:08:49 gschwarz Exp $
|
||||
|
||||
--- sipp.cpp.orig 2005-11-19 00:41:45.000000000 +0100
|
||||
+++ sipp.cpp 2005-11-19 00:44:20.000000000 +0100
|
||||
@@ -1241,7 +1241,7 @@
|
||||
sipp_socklen_t len = sizeof(twinSipp_sockaddr);
|
||||
twinSippSocket = accept(s,
|
||||
(sockaddr *)(void *)&twinSipp_sockaddr,
|
||||
- &len);
|
||||
+ (socklen_t *) &len);
|
||||
|
||||
pollset_add(0, twinSippSocket);
|
||||
return(-2);
|
||||
@@ -1271,7 +1271,7 @@
|
||||
sipp_socklen_t len = sizeof(remote_sockaddr);
|
||||
int new_sock = accept(s,
|
||||
(sockaddr *)(void *)&remote_sockaddr,
|
||||
- &len);
|
||||
+ (socklen_t *) &len);
|
||||
|
||||
pollset_add(0, new_sock);
|
||||
return -2;
|
||||
@@ -1316,7 +1316,7 @@
|
||||
buffer_size,
|
||||
0,
|
||||
(sockaddr *)(void *)&remote_sockaddr,
|
||||
- &len);
|
||||
+ (socklen_t *) &len);
|
||||
|
||||
} else {
|
||||
size = recvfrom(s,
|
||||
@@ -1648,7 +1648,7 @@
|
||||
--- sipp.cpp.orig 2008-07-12 15:57:53.000000000 +0200
|
||||
+++ sipp.cpp 2008-07-12 16:05:00.000000000 +0200
|
||||
@@ -3587,7 +3587,7 @@
|
||||
msg,
|
||||
sizeof(msg), 0,
|
||||
media_bufsize, 0,
|
||||
(sockaddr *)(void *) &remote_rtp_addr,
|
||||
- &len);
|
||||
+ (socklen_t *) &len);
|
||||
+ (sipp_socklen_t *) &len);
|
||||
|
||||
if (((long)nr) < 0) {
|
||||
WARNING_P2("%s %i",
|
||||
@@ -2665,7 +2665,7 @@
|
||||
sipp_socklen_t len = sizeof(local_sockaddr);
|
||||
getsockname(main_socket,
|
||||
(sockaddr *)(void *)&local_sockaddr,
|
||||
- &len);
|
||||
+ (socklen_t *) &len);
|
||||
#ifdef __hpux
|
||||
local_port = local_sockaddr.sin_port;
|
||||
#else
|
||||
WARNING("%s %i",
|
||||
|
|
|
@ -1,12 +1,13 @@
|
|||
$NetBSD: patch-ad,v 1.1 2006/06/03 18:25:47 gschwarz Exp $
|
||||
$NetBSD: patch-ad,v 1.2 2008/07/12 15:08:49 gschwarz Exp $
|
||||
|
||||
--- comp.h.orig 2006-05-06 11:22:49.000000000 +0000
|
||||
+++ comp.h
|
||||
@@ -19,6 +19,7 @@
|
||||
* From Hewlett Packard Company.
|
||||
*/
|
||||
|
||||
+#include <sys/types.h>
|
||||
#include <sys/socket.h>
|
||||
|
||||
#ifdef __cplusplus
|
||||
--- screen.cpp.orig 2008-07-12 16:12:03.000000000 +0200
|
||||
+++ screen.cpp 2008-07-12 16:12:07.000000000 +0200
|
||||
@@ -29,7 +29,7 @@
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include <signal.h>
|
||||
-#include <screen.hpp>
|
||||
+#include "screen.hpp"
|
||||
#include <errno.h>
|
||||
#include <sys/time.h>
|
||||
#include <sys/resource.h>
|
||||
|
|
85
sipp/patches/patch-ae
Normal file
85
sipp/patches/patch-ae
Normal file
|
@ -0,0 +1,85 @@
|
|||
$NetBSD: patch-ae,v 1.1 2008/07/12 15:08:49 gschwarz Exp $
|
||||
|
||||
--- call.cpp.orig 2008-07-12 16:46:12.000000000 +0200
|
||||
+++ call.cpp 2008-07-12 17:00:24.000000000 +0200
|
||||
@@ -124,7 +124,14 @@
|
||||
char pattern[] = "c=IN IP4 ";
|
||||
char *begin, *end;
|
||||
char ip[32];
|
||||
- begin = strstr(msg, pattern);
|
||||
+/* patch to counter CVE-2008-2085
|
||||
+ based on patch published by Nico Golde ias in
|
||||
+ http://people.debian.org/~nion/nmu-diff/sip-tester-2.0.1-1.1_2.0.1-1.2.patch
|
||||
+*/
|
||||
+
|
||||
+ char *tmp = strdup(msg);
|
||||
+ if(!tmp) return INADDR_NONE;
|
||||
+ begin = strstr(tmp, pattern);
|
||||
if (!begin) {
|
||||
/* Can't find what we're looking at -> return no address */
|
||||
return INADDR_NONE;
|
||||
@@ -133,8 +140,11 @@
|
||||
end = strstr(begin, "\r\n");
|
||||
if (!end)
|
||||
return INADDR_NONE;
|
||||
+ *end = 0;
|
||||
memset(ip, 0, 32);
|
||||
- strncpy(ip, begin, end - begin);
|
||||
+ strncpy(ip, begin, sizeof(ip) - 1);
|
||||
+ ip[sizeof(ip) - 1] = 0;
|
||||
+ free(tmp);
|
||||
return inet_addr(ip);
|
||||
}
|
||||
|
||||
@@ -147,11 +157,13 @@
|
||||
char pattern[] = "c=IN IP6 ";
|
||||
char *begin, *end;
|
||||
char ip[128];
|
||||
+ char *tmp = strdup(msg);
|
||||
|
||||
memset(&addr, 0, sizeof(addr));
|
||||
memset(ip, 0, 128);
|
||||
|
||||
- begin = strstr(msg, pattern);
|
||||
+ if(!tmp) return 0;
|
||||
+ begin = strstr(tmp, pattern);
|
||||
if (!begin) {
|
||||
/* Can't find what we're looking at -> return no address */
|
||||
return 0;
|
||||
@@ -160,7 +172,11 @@
|
||||
end = strstr(begin, "\r\n");
|
||||
if (!end)
|
||||
return 0;
|
||||
- strncpy(ip, begin, end - begin);
|
||||
+
|
||||
+ *end = 0;
|
||||
+ strncpy(ip, begin, sizeof(ip) - 1);
|
||||
+ ip[sizeof(ip) - 1] = 0;
|
||||
+ free(tmp);
|
||||
if (!inet_pton(AF_INET6, ip, &addr)) {
|
||||
return 0;
|
||||
}
|
||||
@@ -187,7 +203,10 @@
|
||||
ERROR("Internal error: Undefined media pattern %d\n", 3);
|
||||
}
|
||||
|
||||
- begin = strstr(msg, pattern);
|
||||
+ char *tmp = strdup(msg);
|
||||
+
|
||||
+ if(!tmp) return 0;
|
||||
+ begin = strstr(tmp, pattern);
|
||||
if (!begin) {
|
||||
/* m=audio not found */
|
||||
return 0;
|
||||
@@ -196,8 +215,11 @@
|
||||
end = strstr(begin, "\r\n");
|
||||
if (!end)
|
||||
ERROR("get_remote_port_media: no CRLF found");
|
||||
+ *end = 0;
|
||||
memset(number, 0, sizeof(number));
|
||||
strncpy(number, begin, sizeof(number) - 1);
|
||||
+ number[sizeof(number) - 1] = 0;
|
||||
+ free(tmp);
|
||||
return atoi(number);
|
||||
}
|
||||
|
Loading…
Reference in a new issue