From f285d4f4f395d7a69f182ddb35ec48c8b10da2d2 Mon Sep 17 00:00:00 2001 From: Dan Helfman Date: Sat, 16 Apr 2011 11:35:45 -0700 Subject: Fix for #156: UPnP segfault when no valid UPnP IGDs are found. --- net.cpp | 6 ++++-- 1 file 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; -- cgit v1.2.3