Jérémie Courrèges-Anglas wrote:
> Please try the diff below.  It fixes the "backwards memcpy" problem
> easily noticeable with psql -h ::1.
> 
> $OpenBSD$
> --- src/backend/libpq/hba.c.orig      Mon Feb 16 21:53:21 2015
> +++ src/backend/libpq/hba.c   Mon Feb 16 21:54:44 2015
> @@ -700,8 +700,8 @@ check_ip(SockAddr *raddr, struct sockaddr * addr, stru
>               struct sockaddr_storage addrcopy,
>                                       maskcopy;
>  
> -             memcpy(&addrcopy, &addr, sizeof(addrcopy));
> -             memcpy(&maskcopy, &mask, sizeof(maskcopy));
> +             memcpy(&addrcopy, addr, addr->sa_len);
> +             memcpy(&maskcopy, mask, mask->sa_len);
>               pg_promote_v4_to_v6_addr(&addrcopy);
>               pg_promote_v4_to_v6_mask(&maskcopy);

How did this ever work? You're changing the source too. This isn't just a
"backwards" memcpy, it was an overflow.

Reply via email to