aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDan Helfman <witten@torsion.org>2011-04-16 11:35:45 -0700
committerMatt Corallo <matt@bluematt.me>2011-04-16 21:58:42 +0200
commitf285d4f4f395d7a69f182ddb35ec48c8b10da2d2 (patch)
treef6b7c6a376cdde2538beafe848416f6b24bd3c89
parent973800b52f13e993110e351ec414eed54147118d (diff)
downloadbitcoin-f285d4f4f395d7a69f182ddb35ec48c8b10da2d2.tar.xz
Fix for #156: UPnP segfault when no valid UPnP IGDs are found.
-rw-r--r--net.cpp6
1 files changed, 4 insertions, 2 deletions
diff --git a/net.cpp b/net.cpp
index f3857baf61..a403655660 100644
--- a/net.cpp
+++ b/net.cpp
@@ -906,7 +906,8 @@ void ThreadMapPort2(void* parg)
struct IGDdatas data;
int r;
- if (UPNP_GetValidIGD(devlist, &urls, &data, lanaddr, sizeof(lanaddr)) == 1)
+ r = UPNP_GetValidIGD(devlist, &urls, &data, lanaddr, sizeof(lanaddr));
+ if (r == 1)
{
char intClient[16];
char intPort[6];
@@ -937,7 +938,8 @@ void ThreadMapPort2(void* parg)
} else {
printf("No valid UPnP IGDs found\n");
freeUPNPDevlist(devlist); devlist = 0;
- FreeUPNPUrls(&urls);
+ if (r != 0)
+ FreeUPNPUrls(&urls);
loop {
if (fShutdown || !fUseUPnP)
return;