From: Kinsey Moore Date: Fri, 13 Jan 2012 21:40:32 +0000 (+0000) Subject: Make sure asterisk builds on OpenBSD X-Git-Tag: 1.8.10.0-rc1~59 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=2f0051982aff4996665db6e1bf3538a6cb0b6311;p=thirdparty%2Fasterisk.git Make sure asterisk builds on OpenBSD OpenBSD defines SO_PEERCRED, but it returns a 'struct sockpeercred', not 'struct ucred', which causes compilation of main/asterisk.c to fail in read_credentials(). This allows configure to check for sockpeercred and asterisk to deal with it properly. (closes issue ASTERISK-18929) Reported-by: Barry Miller Patch-by: Barry Miller git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@350730 65c4cc65-6c06-0410-ace0-fbb531ad65f3 --- diff --git a/bootstrap.sh b/bootstrap.sh index 6ca277df2c..3497e24e62 100755 --- a/bootstrap.sh +++ b/bootstrap.sh @@ -17,6 +17,10 @@ case `uname -sr` in MY_AC_VER=259 MY_AM_VER=19 ;; + OpenBSD*) + export AUTOCONF_VERSION=2.63 + export AUTOMAKE_VERSION=1.9 + ;; *'BSD'*) MY_AC_VER=-2.62 MY_AM_VER=-1.9 diff --git a/configure.ac b/configure.ac index d3a828cfa6..3a718f5922 100644 --- a/configure.ac +++ b/configure.ac @@ -531,7 +531,8 @@ AC_TYPE_OFF_T AC_TYPE_PID_T AC_TYPE_SIZE_T AC_CHECK_MEMBERS([struct stat.st_blksize]) -AC_CHECK_MEMBERS([struct ucred.uid, struct ucred.cr_uid], [], [], [#include ]) +AC_CHECK_MEMBERS([struct ucred.uid, struct ucred.cr_uid, struct sockpeercred.uid], [], [], [#include +#include ]) AC_CHECK_MEMBERS([struct ifreq.ifr_ifru.ifru_hwaddr], [], [], [#include ]) AC_HEADER_TIME AC_STRUCT_TM diff --git a/main/asterisk.c b/main/asterisk.c index ac5191f8f5..7ccf1e6e54 100644 --- a/main/asterisk.c +++ b/main/asterisk.c @@ -1193,7 +1193,12 @@ static pthread_t lthread; static int read_credentials(int fd, char *buffer, size_t size, struct console *con) { #if defined(SO_PEERCRED) +#ifdef HAVE_STRUCT_SOCKPEERCRED_UID +#define HAVE_STRUCT_UCRED_UID + struct sockpeercred cred; +#else struct ucred cred; +#endif socklen_t len = sizeof(cred); #endif #if defined(HAVE_GETPEEREID)