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.