Page Menu
Home
FreeBSD
Search
Configure Global Search
Log In
Files
F151059692
D47778.id.diff
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Flag For Later
Award Token
Size
18 KB
Referenced Files
None
Subscribers
None
D47778.id.diff
View Options
diff --git a/sys/netinet/libalias/alias.c b/sys/netinet/libalias/alias.c
--- a/sys/netinet/libalias/alias.c
+++ b/sys/netinet/libalias/alias.c
@@ -290,13 +290,14 @@
{
struct alias_link *lnk;
struct icmp *ic;
+ int ret;
LIBALIAS_LOCK_ASSERT(la);
ic = (struct icmp *)ip_next(pip);
/* Get source address from ICMP data field and restore original data */
- lnk = FindIcmpIn(la, pip->ip_src, pip->ip_dst, ic->icmp_id, 1);
- if (lnk != NULL) {
+ ret = FindIcmpIn(la, pip->ip_src, pip->ip_dst, ic->icmp_id, 1, &lnk);
+ if (ret == PKT_ALIAS_OK) {
u_short original_id;
int accumulate;
@@ -319,10 +320,8 @@
&original_address, &pip->ip_dst, 2);
pip->ip_dst = original_address;
}
-
- return (PKT_ALIAS_OK);
}
- return (PKT_ALIAS_IGNORED);
+ return (ret);
}
/*
@@ -337,6 +336,7 @@
struct udphdr *ud;
struct tcphdr *tc;
struct alias_link *lnk;
+ int ret;
LIBALIAS_LOCK_ASSERT(la);
ic = (struct icmp *)ip_next(pip);
@@ -346,18 +346,26 @@
tc = (struct tcphdr *)ip_next(ip);
ic2 = (struct icmp *)ip_next(ip);
- if (ip->ip_p == IPPROTO_UDP)
- lnk = FindUdpTcpIn(la, ip->ip_dst, ip->ip_src,
+ if (ip->ip_p == IPPROTO_UDP) {
+ ret = FindUdpTcpIn(la, ip->ip_dst, ip->ip_src,
ud->uh_dport, ud->uh_sport,
- IPPROTO_UDP, 0);
- else if (ip->ip_p == IPPROTO_TCP)
- lnk = FindUdpTcpIn(la, ip->ip_dst, ip->ip_src,
+ IPPROTO_UDP, 0, &lnk);
+ if (ret != PKT_ALIAS_OK)
+ return (ret);
+ } else if (ip->ip_p == IPPROTO_TCP) {
+ ret = FindUdpTcpIn(la, ip->ip_dst, ip->ip_src,
tc->th_dport, tc->th_sport,
- IPPROTO_TCP, 0);
- else if (ip->ip_p == IPPROTO_ICMP) {
- if (ic2->icmp_type == ICMP_ECHO || ic2->icmp_type == ICMP_TSTAMP)
- lnk = FindIcmpIn(la, ip->ip_dst, ip->ip_src, ic2->icmp_id, 0);
- else
+ IPPROTO_TCP, 0, &lnk);
+ if (ret != PKT_ALIAS_OK)
+ return (ret);
+ } else if (ip->ip_p == IPPROTO_ICMP) {
+ if (ic2->icmp_type == ICMP_ECHO ||
+ ic2->icmp_type == ICMP_TSTAMP) {
+ ret = FindIcmpIn(la, ip->ip_dst, ip->ip_src,
+ ic2->icmp_id, 0, &lnk);
+ if (ret != PKT_ALIAS_OK)
+ return (ret);
+ } else
lnk = NULL;
} else
lnk = NULL;
@@ -479,13 +487,15 @@
{
struct alias_link *lnk;
struct icmp *ic;
+ int ret;
LIBALIAS_LOCK_ASSERT(la);
ic = (struct icmp *)ip_next(pip);
/* Save overwritten data for when echo packet returns */
- lnk = FindIcmpOut(la, pip->ip_src, pip->ip_dst, ic->icmp_id, create);
- if (lnk != NULL) {
+ ret = FindIcmpOut(la, pip->ip_src, pip->ip_dst, ic->icmp_id, create,
+ &lnk);
+ if (ret == PKT_ALIAS_OK) {
u_short alias_id;
int accumulate;
@@ -508,10 +518,8 @@
&alias_address, &pip->ip_src, 2);
pip->ip_src = alias_address;
}
-
- return (PKT_ALIAS_OK);
}
- return (PKT_ALIAS_IGNORED);
+ return (ret);
}
/*
@@ -526,6 +534,7 @@
struct udphdr *ud;
struct tcphdr *tc;
struct alias_link *lnk;
+ int ret;
LIBALIAS_LOCK_ASSERT(la);
ic = (struct icmp *)ip_next(pip);
@@ -535,18 +544,26 @@
tc = (struct tcphdr *)ip_next(ip);
ic2 = (struct icmp *)ip_next(ip);
- if (ip->ip_p == IPPROTO_UDP)
- lnk = FindUdpTcpOut(la, ip->ip_dst, ip->ip_src,
+ if (ip->ip_p == IPPROTO_UDP) {
+ ret = FindUdpTcpOut(la, ip->ip_dst, ip->ip_src,
ud->uh_dport, ud->uh_sport,
- IPPROTO_UDP, 0);
- else if (ip->ip_p == IPPROTO_TCP)
- lnk = FindUdpTcpOut(la, ip->ip_dst, ip->ip_src,
+ IPPROTO_UDP, 0, &lnk);
+ if (ret != PKT_ALIAS_OK)
+ return (ret);
+ } else if (ip->ip_p == IPPROTO_TCP) {
+ ret = FindUdpTcpOut(la, ip->ip_dst, ip->ip_src,
tc->th_dport, tc->th_sport,
- IPPROTO_TCP, 0);
- else if (ip->ip_p == IPPROTO_ICMP) {
- if (ic2->icmp_type == ICMP_ECHO || ic2->icmp_type == ICMP_TSTAMP)
- lnk = FindIcmpOut(la, ip->ip_dst, ip->ip_src, ic2->icmp_id, 0);
- else
+ IPPROTO_TCP, 0, &lnk);
+ if (ret != PKT_ALIAS_OK)
+ return (ret);
+ } else if (ip->ip_p == IPPROTO_ICMP) {
+ if (ic2->icmp_type == ICMP_ECHO ||
+ ic2->icmp_type == ICMP_TSTAMP) {
+ ret = FindIcmpOut(la, ip->ip_dst, ip->ip_src,
+ ic2->icmp_id, 0, &lnk);
+ if (ret != PKT_ALIAS_OK)
+ return (ret);
+ } else
lnk = NULL;
} else
lnk = NULL;
@@ -661,14 +678,15 @@
struct ip *pip, u_char ip_p, u_short *ip_sum)
{
struct alias_link *lnk;
+ int ret;
LIBALIAS_LOCK_ASSERT(la);
/* Return if proxy-only mode is enabled */
if (la->packetAliasMode & PKT_ALIAS_PROXY_ONLY)
return (PKT_ALIAS_OK);
- lnk = FindProtoIn(la, ip_src, pip->ip_dst, ip_p);
- if (lnk != NULL) {
+ ret = FindProtoIn(la, ip_src, pip->ip_dst, ip_p, &lnk);
+ if (ret == PKT_ALIAS_OK) {
struct in_addr original_address;
original_address = GetOriginalAddress(lnk);
@@ -677,10 +695,8 @@
DifferentialChecksum(ip_sum,
&original_address, &pip->ip_dst, 2);
pip->ip_dst = original_address;
-
- return (PKT_ALIAS_OK);
}
- return (PKT_ALIAS_IGNORED);
+ return (ret);
}
/*
@@ -693,6 +709,7 @@
struct in_addr ip_dst, u_char ip_p, u_short *ip_sum, int create)
{
struct alias_link *lnk;
+ int ret;
LIBALIAS_LOCK_ASSERT(la);
@@ -703,8 +720,8 @@
if (!create)
return (PKT_ALIAS_IGNORED);
- lnk = FindProtoOut(la, pip->ip_src, ip_dst, ip_p);
- if (lnk != NULL) {
+ ret = FindProtoOut(la, pip->ip_src, ip_dst, ip_p, &lnk);
+ if (ret == PKT_ALIAS_OK) {
struct in_addr alias_address;
alias_address = GetAliasAddress(lnk);
@@ -713,10 +730,8 @@
DifferentialChecksum(ip_sum,
&alias_address, &pip->ip_src, 2);
pip->ip_src = alias_address;
-
- return (PKT_ALIAS_OK);
}
- return (PKT_ALIAS_IGNORED);
+ return (ret);
}
#define MF_ISSET(_pip) (ntohs((_pip)->ip_off) & IP_MF)
@@ -745,6 +760,7 @@
{
struct udphdr *ud;
struct alias_link *lnk;
+ int ret;
LIBALIAS_LOCK_ASSERT(la);
@@ -752,10 +768,12 @@
if (ud == NULL)
return (PKT_ALIAS_IGNORED);
- lnk = FindUdpTcpIn(la, pip->ip_src, pip->ip_dst,
+ ret = FindUdpTcpIn(la, pip->ip_src, pip->ip_dst,
ud->uh_sport, ud->uh_dport,
- IPPROTO_UDP, !(la->packetAliasMode & PKT_ALIAS_PROXY_ONLY));
- if (lnk != NULL) {
+ IPPROTO_UDP, !(la->packetAliasMode & PKT_ALIAS_PROXY_ONLY), &lnk);
+ if (ret != PKT_ALIAS_OK)
+ return (ret);
+ {
struct in_addr alias_address;
struct in_addr original_address;
struct in_addr proxy_address;
@@ -828,7 +846,6 @@
return (PKT_ALIAS_OK);
}
- return (PKT_ALIAS_IGNORED);
}
static int
@@ -840,7 +857,7 @@
struct in_addr proxy_server_address;
u_short dest_port;
u_short proxy_server_port;
- int proxy_type;
+ int proxy_type, ret;
LIBALIAS_LOCK_ASSERT(la);
@@ -877,10 +894,12 @@
pip->ip_dst = proxy_server_address;
ud->uh_dport = proxy_server_port;
}
- lnk = FindUdpTcpOut(la, pip->ip_src, pip->ip_dst,
+ ret = FindUdpTcpOut(la, pip->ip_src, pip->ip_dst,
ud->uh_sport, ud->uh_dport,
- IPPROTO_UDP, create);
- if (lnk != NULL) {
+ IPPROTO_UDP, create, &lnk);
+ if (ret != PKT_ALIAS_OK)
+ return (ret);
+ {
u_short alias_port;
struct in_addr alias_address;
struct alias_data ad = {
@@ -930,7 +949,6 @@
return (PKT_ALIAS_OK);
}
- return (PKT_ALIAS_IGNORED);
}
static int
@@ -939,6 +957,7 @@
struct tcphdr *tc;
struct alias_link *lnk;
size_t dlen;
+ int ret;
LIBALIAS_LOCK_ASSERT(la);
@@ -947,11 +966,12 @@
return (PKT_ALIAS_IGNORED);
tc = (struct tcphdr *)ip_next(pip);
- lnk = FindUdpTcpIn(la, pip->ip_src, pip->ip_dst,
+ ret = FindUdpTcpIn(la, pip->ip_src, pip->ip_dst,
tc->th_sport, tc->th_dport,
IPPROTO_TCP,
- !(la->packetAliasMode & PKT_ALIAS_PROXY_ONLY));
- if (lnk != NULL) {
+ !(la->packetAliasMode & PKT_ALIAS_PROXY_ONLY),
+ &lnk);
+ if (ret == PKT_ALIAS_OK) {
struct in_addr alias_address;
struct in_addr original_address;
struct in_addr proxy_address;
@@ -1057,13 +1077,13 @@
return (PKT_ALIAS_OK);
}
- return (PKT_ALIAS_IGNORED);
+ return (ret);
}
static int
TcpAliasOut(struct libalias *la, struct ip *pip, int maxpacketsize, int create)
{
- int proxy_type;
+ int proxy_type, ret;
u_short dest_port;
u_short proxy_server_port;
size_t dlen;
@@ -1108,12 +1128,12 @@
accumulate -= twowords(&pip->ip_dst);
ADJUST_CHECKSUM(accumulate, pip->ip_sum);
}
- lnk = FindUdpTcpOut(la, pip->ip_src, pip->ip_dst,
+ ret = FindUdpTcpOut(la, pip->ip_src, pip->ip_dst,
tc->th_sport, tc->th_dport,
- IPPROTO_TCP, create);
- if (lnk == NULL)
- return (PKT_ALIAS_IGNORED);
- if (lnk != NULL) {
+ IPPROTO_TCP, create, &lnk);
+ if (ret != PKT_ALIAS_OK)
+ return (ret);
+ {
u_short alias_port;
struct in_addr alias_address;
int accumulate;
@@ -1177,7 +1197,6 @@
return (PKT_ALIAS_OK);
}
- return (PKT_ALIAS_IGNORED);
}
/* Fragment Handling
@@ -1581,17 +1600,24 @@
ic = (struct icmp *)ip_next(pip);
/* Find a link */
- if (pip->ip_p == IPPROTO_UDP)
- lnk = FindUdpTcpIn(la, pip->ip_dst, pip->ip_src,
+ if (pip->ip_p == IPPROTO_UDP) {
+ iresult = FindUdpTcpIn(la, pip->ip_dst, pip->ip_src,
ud->uh_dport, ud->uh_sport,
- IPPROTO_UDP, 0);
- else if (pip->ip_p == IPPROTO_TCP)
- lnk = FindUdpTcpIn(la, pip->ip_dst, pip->ip_src,
+ IPPROTO_UDP, 0, &lnk);
+ if (iresult != PKT_ALIAS_OK)
+ goto getout;
+ } else if (pip->ip_p == IPPROTO_TCP) {
+ iresult = FindUdpTcpIn(la, pip->ip_dst, pip->ip_src,
tc->th_dport, tc->th_sport,
- IPPROTO_TCP, 0);
- else if (pip->ip_p == IPPROTO_ICMP)
- lnk = FindIcmpIn(la, pip->ip_dst, pip->ip_src, ic->icmp_id, 0);
- else
+ IPPROTO_TCP, 0, &lnk);
+ if (iresult != PKT_ALIAS_OK)
+ goto getout;
+ } else if (pip->ip_p == IPPROTO_ICMP) {
+ iresult = FindIcmpIn(la, pip->ip_dst, pip->ip_src,
+ ic->icmp_id, 0, &lnk);
+ if (iresult != PKT_ALIAS_OK)
+ goto getout;
+ } else
lnk = NULL;
/* Change it from an aliased packet to an unaliased packet */
diff --git a/sys/netinet/libalias/alias_db.c b/sys/netinet/libalias/alias_db.c
--- a/sys/netinet/libalias/alias_db.c
+++ b/sys/netinet/libalias/alias_db.c
@@ -1049,15 +1049,19 @@
(prototypes in alias_local.h)
*/
-struct alias_link *
+int
FindIcmpIn(struct libalias *la, struct in_addr dst_addr,
struct in_addr alias_addr,
u_short id_alias,
- int create)
+ int create,
+ struct alias_link **lnkp)
{
struct alias_link *lnk;
LIBALIAS_LOCK_ASSERT(la);
+
+ *lnkp = NULL;
+
lnk = FindLinkIn(la, dst_addr, alias_addr,
NO_DEST_PORT, id_alias,
LINK_ICMP, 0);
@@ -1068,19 +1072,26 @@
lnk = AddLink(la, target_addr, dst_addr, alias_addr,
id_alias, NO_DEST_PORT, id_alias,
LINK_ICMP);
+ if (lnk == NULL)
+ return (PKT_ALIAS_ERROR);
}
- return (lnk);
+ *lnkp = lnk;
+ return (lnk != NULL ? PKT_ALIAS_OK : PKT_ALIAS_IGNORED);
}
-struct alias_link *
+int
FindIcmpOut(struct libalias *la, struct in_addr src_addr,
struct in_addr dst_addr,
u_short id,
- int create)
+ int create,
+ struct alias_link **lnkp)
{
struct alias_link *lnk;
LIBALIAS_LOCK_ASSERT(la);
+
+ *lnkp = NULL;
+
lnk = FindLinkOut(la, src_addr, dst_addr,
id, NO_DEST_PORT,
LINK_ICMP, 0);
@@ -1091,8 +1102,11 @@
lnk = AddLink(la, src_addr, dst_addr, alias_addr,
id, NO_DEST_PORT, GET_ALIAS_ID,
LINK_ICMP);
+ if (lnk == NULL)
+ return (PKT_ALIAS_ERROR);
}
- return (lnk);
+ *lnkp = lnk;
+ return (lnk != NULL ? PKT_ALIAS_OK : PKT_ALIAS_IGNORED);
}
struct alias_link *
@@ -1146,18 +1160,21 @@
LINK_FRAGMENT_PTR, 0);
}
-struct alias_link *
+int
FindProtoIn(struct libalias *la, struct in_addr dst_addr,
struct in_addr alias_addr,
- u_char proto)
+ u_char proto,
+ struct alias_link **lnkp)
{
struct alias_link *lnk;
LIBALIAS_LOCK_ASSERT(la);
+
+ *lnkp = NULL;
+
lnk = FindLinkIn(la, dst_addr, alias_addr,
NO_DEST_PORT, 0,
proto, 1);
-
if (lnk == NULL && !(la->packetAliasMode & PKT_ALIAS_DENY_INCOMING)) {
struct in_addr target_addr;
@@ -1165,22 +1182,28 @@
lnk = AddLink(la, target_addr, dst_addr, alias_addr,
NO_SRC_PORT, NO_DEST_PORT, 0,
proto);
+ if (lnk == NULL)
+ return (PKT_ALIAS_ERROR);
}
- return (lnk);
+ *lnkp = lnk;
+ return (lnk != NULL ? PKT_ALIAS_OK : PKT_ALIAS_IGNORED);
}
-struct alias_link *
+int
FindProtoOut(struct libalias *la, struct in_addr src_addr,
struct in_addr dst_addr,
- u_char proto)
+ u_char proto,
+ struct alias_link **lnkp)
{
struct alias_link *lnk;
LIBALIAS_LOCK_ASSERT(la);
+
+ *lnkp = NULL;
+
lnk = FindLinkOut(la, src_addr, dst_addr,
NO_SRC_PORT, NO_DEST_PORT,
proto, 1);
-
if (lnk == NULL) {
struct in_addr alias_addr;
@@ -1188,22 +1211,29 @@
lnk = AddLink(la, src_addr, dst_addr, alias_addr,
NO_SRC_PORT, NO_DEST_PORT, 0,
proto);
+ if (lnk == NULL)
+ return (PKT_ALIAS_ERROR);
}
- return (lnk);
+ *lnkp = lnk;
+ return (lnk != NULL ? PKT_ALIAS_OK : PKT_ALIAS_IGNORED);
}
-struct alias_link *
+int
FindUdpTcpIn(struct libalias *la, struct in_addr dst_addr,
struct in_addr alias_addr,
u_short dst_port,
u_short alias_port,
u_char proto,
- int create)
+ int create,
+ struct alias_link **lnkp)
{
int link_type;
struct alias_link *lnk;
LIBALIAS_LOCK_ASSERT(la);
+
+ *lnkp = NULL;
+
switch (proto) {
case IPPROTO_UDP:
link_type = LINK_UDP;
@@ -1212,8 +1242,7 @@
link_type = LINK_TCP;
break;
default:
- return (NULL);
- break;
+ return (PKT_ALIAS_IGNORED);
}
lnk = FindLinkIn(la, dst_addr, alias_addr,
@@ -1227,22 +1256,30 @@
lnk = AddLink(la, target_addr, dst_addr, alias_addr,
alias_port, dst_port, alias_port,
link_type);
+ if (lnk == NULL)
+ return (PKT_ALIAS_ERROR);
+
}
- return (lnk);
+ *lnkp = lnk;
+ return (lnk != NULL ? PKT_ALIAS_OK : PKT_ALIAS_IGNORED);
}
-struct alias_link *
+int
FindUdpTcpOut(struct libalias *la, struct in_addr src_addr,
struct in_addr dst_addr,
u_short src_port,
u_short dst_port,
u_char proto,
- int create)
+ int create,
+ struct alias_link **lnkp)
{
int link_type;
struct alias_link *lnk;
LIBALIAS_LOCK_ASSERT(la);
+
+ *lnkp = NULL;
+
switch (proto) {
case IPPROTO_UDP:
link_type = LINK_UDP;
@@ -1251,12 +1288,10 @@
link_type = LINK_TCP;
break;
default:
- return (NULL);
- break;
+ return (PKT_ALIAS_IGNORED);
}
lnk = FindLinkOut(la, src_addr, dst_addr, src_port, dst_port, link_type, create);
-
if (lnk == NULL && create) {
struct in_addr alias_addr;
@@ -1264,8 +1299,11 @@
lnk = AddLink(la, src_addr, dst_addr, alias_addr,
src_port, dst_port, GET_ALIAS_PORT,
link_type);
+ if (lnk == NULL)
+ return (PKT_ALIAS_ERROR);
}
- return (lnk);
+ *lnkp = lnk;
+ return (lnk != NULL ? PKT_ALIAS_OK : PKT_ALIAS_IGNORED);
}
struct alias_link *
diff --git a/sys/netinet/libalias/alias_irc.c b/sys/netinet/libalias/alias_irc.c
--- a/sys/netinet/libalias/alias_irc.c
+++ b/sys/netinet/libalias/alias_irc.c
@@ -360,9 +360,9 @@
* matter, and this would probably allow it through
* at least _some_ firewalls.
*/
- dcc_lnk = FindUdpTcpOut(la, true_addr, destaddr,
+ (void)FindUdpTcpOut(la, true_addr, destaddr,
true_port, 0,
- IPPROTO_TCP, 1);
+ IPPROTO_TCP, 1, &dcc_lnk);
DBprintf(("Got a DCC link\n"));
if (dcc_lnk) {
struct in_addr alias_address; /* Address from aliasing */
diff --git a/sys/netinet/libalias/alias_local.h b/sys/netinet/libalias/alias_local.h
--- a/sys/netinet/libalias/alias_local.h
+++ b/sys/netinet/libalias/alias_local.h
@@ -239,12 +239,12 @@
AddLink(struct libalias *la, struct in_addr src_addr, struct in_addr dst_addr,
struct in_addr alias_addr, u_short src_port, u_short dst_port,
int alias_param, int link_type);
-struct alias_link *
+int
FindIcmpIn(struct libalias *la, struct in_addr _dst_addr, struct in_addr _alias_addr,
- u_short _id_alias, int _create);
-struct alias_link *
+ u_short _id_alias, int _create, struct alias_link **_lnkp);
+int
FindIcmpOut(struct libalias *la, struct in_addr _src_addr, struct in_addr _dst_addr,
- u_short _id, int _create);
+ u_short _id, int _create, struct alias_link **_lnkp);
struct alias_link *
FindFragmentIn1(struct libalias *la, struct in_addr _dst_addr, struct in_addr _alias_addr,
u_short _ip_id);
@@ -255,18 +255,20 @@
AddFragmentPtrLink(struct libalias *la, struct in_addr _dst_addr, u_short _ip_id);
struct alias_link *
FindFragmentPtr(struct libalias *la, struct in_addr _dst_addr, u_short _ip_id);
-struct alias_link *
+int
FindProtoIn(struct libalias *la, struct in_addr _dst_addr, struct in_addr _alias_addr,
- u_char _proto);
-struct alias_link *
+ u_char _proto, struct alias_link **_lnkp);
+int
FindProtoOut(struct libalias *la, struct in_addr _src_addr, struct in_addr _dst_addr,
- u_char _proto);
-struct alias_link *
+ u_char _proto, struct alias_link **_lnkp);
+int
FindUdpTcpIn(struct libalias *la, struct in_addr _dst_addr, struct in_addr _alias_addr,
- u_short _dst_port, u_short _alias_port, u_char _proto, int _create);
-struct alias_link *
+ u_short _dst_port, u_short _alias_port, u_char _proto, int _create,
+ struct alias_link **_lnkp);
+int
FindUdpTcpOut(struct libalias *la, struct in_addr _src_addr, struct in_addr _dst_addr,
- u_short _src_port, u_short _dst_port, u_char _proto, int _create);
+ u_short _src_port, u_short _dst_port, u_char _proto, int _create,
+ struct alias_link **_lnkp);
struct alias_link *
AddPptp(struct libalias *la, struct in_addr _src_addr, struct in_addr _dst_addr,
struct in_addr _alias_addr, u_int16_t _src_call_id);
diff --git a/sys/netinet/libalias/alias_skinny.c b/sys/netinet/libalias/alias_skinny.c
--- a/sys/netinet/libalias/alias_skinny.c
+++ b/sys/netinet/libalias/alias_skinny.c
@@ -279,9 +279,9 @@
*localIpAddr = (u_int32_t)opnrcvch_ack->ipAddr;
null_addr.s_addr = INADDR_ANY;
- opnrcv_lnk = FindUdpTcpOut(la, pip->ip_src, null_addr,
+ (void)FindUdpTcpOut(la, pip->ip_src, null_addr,
htons((u_short) opnrcvch_ack->port), 0,
- IPPROTO_UDP, 1);
+ IPPROTO_UDP, 1, &opnrcv_lnk);
opnrcvch_ack->ipAddr = (u_int32_t)GetAliasAddress(opnrcv_lnk).s_addr;
opnrcvch_ack->port = (u_int32_t)ntohs(GetAliasPort(opnrcv_lnk));
diff --git a/sys/netinet/libalias/alias_smedia.c b/sys/netinet/libalias/alias_smedia.c
--- a/sys/netinet/libalias/alias_smedia.c
+++ b/sys/netinet/libalias/alias_smedia.c
@@ -435,8 +435,8 @@
if ((ntohs(msg_id) == 1) || (ntohs(msg_id) == 7)) {
memcpy(&port, work, 2);
- pna_links = FindUdpTcpOut(la, pip->ip_src, GetDestAddress(lnk),
- port, 0, IPPROTO_UDP, 1);
+ (void)FindUdpTcpOut(la, pip->ip_src, GetDestAddress(lnk),
+ port, 0, IPPROTO_UDP, 1, &pna_links);
if (pna_links != NULL) {
#ifndef NO_FW_PUNCH
/* Punch hole in firewall */
File Metadata
Details
Attached
Mime Type
text/plain
Expires
Mon, Apr 6, 5:23 PM (10 h, 56 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
30988189
Default Alt Text
D47778.id.diff (18 KB)
Attached To
Mode
D47778: libalias: Handle GetNewPort() errors properly
Attached
Detach File
Event Timeline
Log In to Comment