aboutsummaryrefslogtreecommitdiffstats
path: root/gtk/sctp_assoc_analyse.c
diff options
context:
space:
mode:
authorMichael Tüxen <tuexen@fh-muenster.de>2007-01-26 17:27:32 +0000
committerMichael Tüxen <tuexen@fh-muenster.de>2007-01-26 17:27:32 +0000
commitbb773be0ef669c00a79c826269f2a89cb2d4d936 (patch)
tree5792fa3326cfde226321bc95766d2435dbe7b289 /gtk/sctp_assoc_analyse.c
parente4e739a5caf033d2ae9c7885e914809acc13a746 (diff)
Fix handling when both endpoints use the same port number.
svn path=/trunk/; revision=20570
Diffstat (limited to 'gtk/sctp_assoc_analyse.c')
-rw-r--r--gtk/sctp_assoc_analyse.c20
1 files changed, 10 insertions, 10 deletions
diff --git a/gtk/sctp_assoc_analyse.c b/gtk/sctp_assoc_analyse.c
index 6cf6267313..74daff142e 100644
--- a/gtk/sctp_assoc_analyse.c
+++ b/gtk/sctp_assoc_analyse.c
@@ -888,26 +888,23 @@ static void sctp_analyse_cb(struct sctp_analyse* u_data, gboolean ext)
return;
}
- ip_src = g_malloc(edt->pi.src.len);
- memcpy(ip_src, edt->pi.src.data, edt->pi.src.len);
- ip_dst = g_malloc(edt->pi.dst.len);
- memcpy(ip_dst, edt->pi.dst.data, edt->pi.dst.len);
+ ip_src = g_malloc(edt->pi.net_src.len);
+ memcpy(ip_src, edt->pi.net_src.data, edt->pi.net_src.len);
+ ip_dst = g_malloc(edt->pi.net_dst.len);
+ memcpy(ip_dst, edt->pi.net_dst.data, edt->pi.net_dst.len);
srcport = edt->pi.srcport;
dstport = edt->pi.destport;
-
list = g_list_first(sctp_stat_get_info()->assoc_info_list);
while (list)
{
assoc = (sctp_assoc_info_t*)(list->data);
-
if (assoc->port1 == srcport && assoc->port2 == dstport)
{
srclist = g_list_first(assoc->addr1);
while(srclist)
{
src = (address *)(srclist->data);
-
if (*src->data == *ip_src)
{
dstlist = g_list_first(assoc->addr2);
@@ -938,10 +935,13 @@ static void sctp_analyse_cb(struct sctp_analyse* u_data, gboolean ext)
else
srclist = g_list_next(srclist);
}
- simple_dialog(ESD_TYPE_ERROR, ESD_BTN_OK, "Assoc not found!");
- return;
+ if (assoc->port2 != assoc->port1)
+ {
+ simple_dialog(ESD_TYPE_ERROR, ESD_BTN_OK, "Assoc not found!");
+ return;
+ }
}
- else if (assoc->port2 == srcport && assoc->port1 == dstport)
+ if (assoc->port2 == srcport && assoc->port1 == dstport)
{
srclist = g_list_first(assoc->addr2);
while(srclist)