In openvpn-2.0.9 socket_connect() (socket.c), print_sockaddr()
consumes memory without bounds if the server is permanently down or
unreachable becauses gc_free() is not called from within the loop.

Memory is consumed at 72 bytes every 5 seconds or 1.2 megabytes for each
24 hours (plus malloc overhead). That's enough to bring my openwrt box
to its knees within a week or so.

Proposed solution (untested):

       msg (D_LINK_ERRORS | M_ERRNO_SOCK,
           "TCP: connect to %s failed, will try again in %d seconds",
           print_sockaddr (remote, &gc),
           connect_retry_seconds);
+      gc_free (&gc);
+      gc = gc_new ();


Marko

-- 
Marko Rauhamaa      mailto:ma...@pacujo.net     http://pacujo.net/marko/

Reply via email to