Skip to contentSkip to conversation

plug fd leak (patch by Jaroslav Klaus)

PATCH New Matthias Andree 1 participant 1 message Aug 20, 2005

lore
Share & tools
lore
#0 lore raw

PATCH 1/1 plug fd leak (patch by Jaroslav Klaus)

Greetings,

the attached patch was submitted to me in my role as FreeBSD port maintainer by Jaroslav Klaus a while ago, and it hasn't made openvpn 2.0.1. My fault for not sending this on earlier, I simply forgot and figured, when doing the 2.0.1 port, that Jaroslav's patch still applied to the code.

Jaroslav writes:

"The current version of OpenVPN in ports tree - 2.0 - has a bug in route.c in FreeBSD, Darwin, OpenBSD and NetBSD version of get_default_gateway. Allocated socket for route manipulation is never freed so number of mbufs continuously growing and exhaust system resources after a while.. Patch is attached."

Please consider Jaroslav's patch for inclusion.

Signature · 1 line
Matthias Andree
route.c renamed from route.c.orig +6 -0
@@ -1380,6 +1380,7 @@
     {
       warn("writing to routing socket");
       gc_free (&gc);
+      close(s);
       return false;
     }
 
@@ -1387,6 +1388,7 @@
     l = read(s, (char *)&m_rtmsg, sizeof(m_rtmsg));
   } while (l > 0 && (rtm.rtm_seq != seq || rtm.rtm_pid != pid));
                         
+  close(s);
 
   rtm_aux = &rtm;
 
@@ -1535,6 +1537,7 @@
     {
       msg (M_WARN, "ROUTE: problem writing to routing socket");
       gc_free (&gc);
+      close(s);
       return false;
     }
 
@@ -1542,6 +1545,7 @@
     l = read(s, (char *)&m_rtmsg, sizeof(m_rtmsg));
   } while (l > 0 && (rtm.rtm_seq != seq || rtm.rtm_pid != pid));
                         
+  close(s);
 
   rtm_aux = &rtm;
 
@@ -1690,6 +1694,7 @@
     {
       warn("writing to routing socket");
       gc_free (&gc);
+      close(s);
       return false;
     }
 
@@ -1697,6 +1702,7 @@
     l = read(s, (char *)&m_rtmsg, sizeof(m_rtmsg));
   } while (l > 0 && (rtm.rtm_seq != seq || rtm.rtm_pid != pid));
                         
+  close(s);
 
   rtm_aux = &rtm;