Skip to content
Snippets Groups Projects

SIPmsg_PT.cc: Fix wrong pointer passed to inet_ntop

1 file
+ 28
8
Compare changes
  • Side-by-side
  • Inline
+ 28
8
@@ -95,6 +95,18 @@ extern void parsing(const char* buff, int len, bool);
@@ -95,6 +95,18 @@ extern void parsing(const char* buff, int len, bool);
extern int wildcarded_enabled_parser;
extern int wildcarded_enabled_parser;
int body_mode;
int body_mode;
 
static const void *sockaddr_in_addr(const struct sockaddr *addr) {
 
switch (addr->sa_family) {
 
case AF_INET:
 
return &(((const struct sockaddr_in *)addr)->sin_addr);
 
case AF_INET6:
 
return &(((const struct sockaddr_in6 *)addr)->sin6_addr);
 
default:
 
TTCN_error("sockaddr_in_addr(): unexpected sockaddr family %u", addr->sa_family);
 
return NULL;
 
}
 
}
 
static int sockaddr_get_port(const struct sockaddr *addr) {
static int sockaddr_get_port(const struct sockaddr *addr) {
switch (addr->sa_family) {
switch (addr->sa_family) {
case AF_INET:
case AF_INET:
@@ -242,7 +254,8 @@ void SIPmsg__PT::user_map(const char *system_port){
@@ -242,7 +254,8 @@ void SIPmsg__PT::user_map(const char *system_port){
comm_soc = open_comm_socket((const struct sockaddr*)&remote_addr);
comm_soc = open_comm_socket((const struct sockaddr*)&remote_addr);
FD_SET(comm_soc, &connections_read_fds);
FD_SET(comm_soc, &connections_read_fds);
status=CONNECTED;
status=CONNECTED;
dest_addr.host()() = inet_ntop(remote_addr.ss_family, ((struct sockaddr *)&remote_addr)->sa_data,
dest_addr.host()() = inet_ntop(remote_addr.ss_family,
 
sockaddr_in_addr((const struct sockaddr *)&remote_addr),
addrstr, sizeof(addrstr));
addrstr, sizeof(addrstr));
dest_addr.portField()() = sockaddr_get_port((struct sockaddr *)&remote_addr);
dest_addr.portField()() = sockaddr_get_port((struct sockaddr *)&remote_addr);
dest_addr.tcporudp()()=udportcp;
dest_addr.tcporudp()()=udportcp;
@@ -505,7 +518,8 @@ void SIPmsg__PT::Event_Handler(const fd_set *r_fds,
@@ -505,7 +518,8 @@ void SIPmsg__PT::Event_Handler(const fd_set *r_fds,
int index,port_num;
int index,port_num;
FD_SET(incoming_soc, &connections_read_fds);
FD_SET(incoming_soc, &connections_read_fds);
Install_Handler(&connections_read_fds, NULL, NULL, 0.0);
Install_Handler(&connections_read_fds, NULL, NULL, 0.0);
inet_ntop(incoming_addr.ss_family, ((struct sockaddr *)&incoming_addr)->sa_data,
inet_ntop(incoming_addr.ss_family,
 
sockaddr_in_addr((const struct sockaddr *)&incoming_addr),
addrstr, sizeof(addrstr));
addrstr, sizeof(addrstr));
port_num = sockaddr_get_port((struct sockaddr *)&incoming_addr);
port_num = sockaddr_get_port((struct sockaddr *)&incoming_addr);
index = add_conn(addrstr, port_num, incoming_soc);
index = add_conn(addrstr, port_num, incoming_soc);
@@ -529,7 +543,8 @@ void SIPmsg__PT::Event_Handler(const fd_set *r_fds,
@@ -529,7 +543,8 @@ void SIPmsg__PT::Event_Handler(const fd_set *r_fds,
remote.tcporudp()()=1;
remote.tcporudp()()=1;
close_conn(a);
close_conn(a);
} else{
} else{
remote.host()() = inet_ntop(source_addr.ss_family, ((struct sockaddr *)&source_addr)->sa_data,
remote.host()() = inet_ntop(source_addr.ss_family,
 
sockaddr_in_addr((const struct sockaddr *)&source_addr),
addrstr, sizeof(addrstr));
addrstr, sizeof(addrstr));
remote.portField()() = sockaddr_get_port((struct sockaddr *)&source_addr);
remote.portField()() = sockaddr_get_port((struct sockaddr *)&source_addr);
remote.tcporudp()()=0;
remote.tcporudp()()=0;
@@ -555,7 +570,8 @@ void SIPmsg__PT::Event_Handler(const fd_set *r_fds,
@@ -555,7 +570,8 @@ void SIPmsg__PT::Event_Handler(const fd_set *r_fds,
if(a==0){ // incoming UDP packet
if(a==0){ // incoming UDP packet
log("UDP packet received.");
log("UDP packet received.");
last_conn=0;
last_conn=0;
remote.host()() = inet_ntop(source_addr.ss_family, ((struct sockaddr *)&source_addr)->sa_data,
remote.host()() = inet_ntop(source_addr.ss_family,
 
sockaddr_in_addr((const struct sockaddr *)&source_addr),
addrstr, sizeof(addrstr));
addrstr, sizeof(addrstr));
remote.portField()() = sockaddr_get_port((struct sockaddr *)&source_addr);
remote.portField()() = sockaddr_get_port((struct sockaddr *)&source_addr);
remote.tcporudp()()=0;
remote.tcporudp()()=0;
@@ -609,7 +625,8 @@ void SIPmsg__PT::Event_Handler(const fd_set *r_fds,
@@ -609,7 +625,8 @@ void SIPmsg__PT::Event_Handler(const fd_set *r_fds,
FD_ZERO(&readfdset);
FD_ZERO(&readfdset);
FD_SET(comm_soc, &readfdset);
FD_SET(comm_soc, &readfdset);
Install_Handler(&readfdset, NULL, NULL, 0.0);
Install_Handler(&readfdset, NULL, NULL, 0.0);
dest_addr.host()() = inet_ntop(remote_addr.ss_family, ((struct sockaddr *)&remote_addr)->sa_data,
dest_addr.host()() = inet_ntop(remote_addr.ss_family,
 
sockaddr_in_addr((struct sockaddr *)&remote_addr),
addrstr, sizeof(addrstr));
addrstr, sizeof(addrstr));
dest_addr.portField()() = sockaddr_get_port((struct sockaddr *)&remote_addr);
dest_addr.portField()() = sockaddr_get_port((struct sockaddr *)&remote_addr);
dest_addr.tcporudp()()=udportcp;
dest_addr.tcporudp()()=udportcp;
@@ -657,7 +674,8 @@ void SIPmsg__PT::Event_Handler(const fd_set *r_fds,
@@ -657,7 +674,8 @@ void SIPmsg__PT::Event_Handler(const fd_set *r_fds,
if(!udportcp){
if(!udportcp){
dest_addr.host()() = inet_ntop(source_addr.ss_family, ((struct sockaddr *)&source_addr)->sa_data,
dest_addr.host()() = inet_ntop(source_addr.ss_family,
 
sockaddr_in_addr((struct sockaddr *)&source_addr),
addrstr, sizeof(addrstr));
addrstr, sizeof(addrstr));
dest_addr.portField()() = sockaddr_get_port((struct sockaddr *)&source_addr);
dest_addr.portField()() = sockaddr_get_port((struct sockaddr *)&source_addr);
dest_addr.tcporudp()()=udportcp;
dest_addr.tcporudp()()=udportcp;
@@ -3610,7 +3628,8 @@ void SIPmsg__PT::check_address(const ADDRESS *destination_address){
@@ -3610,7 +3628,8 @@ void SIPmsg__PT::check_address(const ADDRESS *destination_address){
status=CONNECTED;
status=CONNECTED;
Uninstall_Handler();
Uninstall_Handler();
Install_Handler(&readfds, NULL , NULL , 0.0);
Install_Handler(&readfds, NULL , NULL , 0.0);
dest_addr.host()() = inet_ntop(remote_addr.ss_family, ((struct sockaddr *)&remote_addr)->sa_data,
dest_addr.host()() = inet_ntop(remote_addr.ss_family,
 
sockaddr_in_addr((struct sockaddr *)&remote_addr),
addrstr, sizeof(addrstr));
addrstr, sizeof(addrstr));
dest_addr.portField()() = sockaddr_get_port((struct sockaddr *)&remote_addr);
dest_addr.portField()() = sockaddr_get_port((struct sockaddr *)&remote_addr);
dest_addr.tcporudp()()=udportcp;
dest_addr.tcporudp()()=udportcp;
@@ -3680,7 +3699,8 @@ void SIPmsg__PT::check_address(const SIP__comm__adress *destination_address){
@@ -3680,7 +3699,8 @@ void SIPmsg__PT::check_address(const SIP__comm__adress *destination_address){
status=CONNECTED;
status=CONNECTED;
Uninstall_Handler();
Uninstall_Handler();
Install_Handler(&readfds, NULL , NULL , 0.0);
Install_Handler(&readfds, NULL , NULL , 0.0);
dest_addr.host()() = inet_ntop(remote_addr.ss_family, ((struct sockaddr *)&remote_addr)->sa_data,
dest_addr.host()() = inet_ntop(remote_addr.ss_family,
 
sockaddr_in_addr((struct sockaddr *)&remote_addr),
addrstr, sizeof(addrstr));
addrstr, sizeof(addrstr));
dest_addr.portField()() = sockaddr_get_port((struct sockaddr *)&remote_addr);
dest_addr.portField()() = sockaddr_get_port((struct sockaddr *)&remote_addr);
dest_addr.tcporudp()()=udportcp;
dest_addr.tcporudp()()=udportcp;
Loading