worked out with jca and lteo, this fixes this issue (which only occurs
when there's an ipv6 connection) for me.

Index: Makefile
===================================================================
RCS file: /cvs/ports/databases/postgresql/Makefile,v
retrieving revision 1.198
diff -u -p -r1.198 Makefile
--- Makefile    6 Feb 2015 09:01:21 -0000       1.198
+++ Makefile    16 Feb 2015 22:37:23 -0000
@@ -10,6 +10,7 @@ COMMENT-plpython=Python procedural langu
 # in case a dump before / restore after pkg_add -u is required!
 
 VERSION=       9.4.1
+REVISION-server= 0
 DISTNAME=      postgresql-${VERSION}
 PKGNAME-main=  postgresql-client-${VERSION}
 PKGNAME-server=        postgresql-server-${VERSION}
Index: patches/patch-src_backend_libpq_hba_c
===================================================================
RCS file: patches/patch-src_backend_libpq_hba_c
diff -N patches/patch-src_backend_libpq_hba_c
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ patches/patch-src_backend_libpq_hba_c       16 Feb 2015 22:37:23 -0000
@@ -0,0 +1,21 @@
+$OpenBSD$
+
+Fix crash when connecting over IPv6. "backwards memcpy" logged but it's worse.
+Don't copy the whole space for a sockaddr_storage, at this point in the
+code the addr/mask are known to be a sockaddr_in. Not using sa_len because
+in some cases mask->sa_len is too short (suspect this may be an issue
+related to http://marc.info/?l=openbsd-tech&m=138089192205849&w=2).
+
+--- src/backend/libpq/hba.c.orig       Mon Feb  2 20:42:55 2015
++++ src/backend/libpq/hba.c    Mon Feb 16 22:13:26 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, sizeof(struct sockaddr_in));
++              memcpy(&maskcopy, mask, sizeof(struct sockaddr_in));
+               pg_promote_v4_to_v6_addr(&addrcopy);
+               pg_promote_v4_to_v6_mask(&maskcopy);
+ 

Reply via email to