$OpenBSD: patch-provider_libserver_ECSession_cpp,v 1.8 2018/10/02 10:49:47 robert Exp $

Index: provider/libserver/ECSession.cpp
--- provider/libserver/ECSession.cpp.orig
+++ provider/libserver/ECSession.cpp
@@ -695,11 +695,20 @@ ECRESULT ECAuthSession::ValidateUserSocket(int socket,
 	uid_t uid;
 	char strbuf[1024];
 #ifdef SO_PEERCRED
+#if defined(__OpenBSD__)
+	struct sockpeercred cr;
+#else
 	struct ucred cr;
+#endif
 	unsigned int cr_len;
 
+#if defined(__OpenBSD__)
+	cr_len = sizeof(struct sockpeercred);
+	if (getsockopt(socket, SOL_SOCKET, SO_PEERCRED, &cr, &cr_len) != 0 || cr_len != sizeof(struct sockpeercred))
+#else
 	cr_len = sizeof(struct ucred);
 	if (getsockopt(socket, SOL_SOCKET, SO_PEERCRED, &cr, &cr_len) != 0 || cr_len != sizeof(struct ucred))
+#endif
 		return KCERR_LOGON_FAILED;
 
 	uid = cr.uid; // uid is the uid of the user that is connecting
