plug fd leak (patch by Jaroslav Klaus)
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;