Hi, On 09-06-17 22:50, Gert Doering wrote: > get_proxy_authenticate() is called with a "gc" parameter which MUST > be NULL, otherwise string_alloc() will allocate memory in the gc_arena > while the caller expects the result to be durable and will do explicit > free() when no longer needed. Remove gc parameter, call string_alloc() > with "NULL" so this is clearly visible. > > Signed-off-by: Gert Doering <g...@greenie.muc.de> > --- > src/openvpn/proxy.c | 6 ++---- > 1 file changed, 2 insertions(+), 4 deletions(-) > > diff --git a/src/openvpn/proxy.c b/src/openvpn/proxy.c > index 8ff09ba..05f362d 100644 > --- a/src/openvpn/proxy.c > +++ b/src/openvpn/proxy.c > @@ -309,7 +309,6 @@ static int > get_proxy_authenticate(socket_descriptor_t sd, > int timeout, > char **data, > - struct gc_arena *gc, > volatile int *signal_received) > { > char buf[256]; > @@ -332,14 +331,14 @@ get_proxy_authenticate(socket_descriptor_t sd, > if (!strncmp(buf+20, "Basic ", 6)) > { > msg(D_PROXY, "PROXY AUTH BASIC: '%s'", buf); > - *data = string_alloc(buf+26, gc); > + *data = string_alloc(buf+26, NULL); > ret = HTTP_AUTH_BASIC; > } > #if PROXY_DIGEST_AUTH > else if (!strncmp(buf+20, "Digest ", 7)) > { > msg(D_PROXY, "PROXY AUTH DIGEST: '%s'", buf); > - *data = string_alloc(buf+27, gc); > + *data = string_alloc(buf+27, NULL); > ret = HTTP_AUTH_DIGEST; > } > #endif > @@ -981,7 +980,6 @@ establish_http_proxy_passthru(struct http_proxy_info *p, > const int method = get_proxy_authenticate(sd, > > get_server_poll_remaining_time(server_poll_timeout), > &pa, > - NULL, > signal_received); > if (method != HTTP_AUTH_NONE) > { >
What a mess... This slightly reduces that, so ACK. -Steffan ------------------------------------------------------------------------------ Check out the vibrant tech community on one of the world's most engaging tech sites, Slashdot.org! http://sdm.link/slashdot _______________________________________________ Openvpn-devel mailing list Openvpn-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/openvpn-devel