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

Reply via email to