diff options
author | Kinsey Moore <kmoore@digium.com> | 2012-01-13 21:42:12 +0000 |
---|---|---|
committer | Kinsey Moore <kmoore@digium.com> | 2012-01-13 21:42:12 +0000 |
commit | 76888b59903e8a83bdbc68bc809b7ade43fe817e (patch) | |
tree | 1808350cfc381ae911cc886547a06fd1308efab9 | |
parent | 9c161503dca5eb7944244ba96c05270794994677 (diff) |
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
........
Merged revisions 350730 from http://svn.asterisk.org/svn/asterisk/branches/1.8
........
Merged revisions 350731 from http://svn.asterisk.org/svn/asterisk/branches/10
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@350732 65c4cc65-6c06-0410-ace0-fbb531ad65f3
-rwxr-xr-x | bootstrap.sh | 4 | ||||
-rw-r--r-- | configure.ac | 3 | ||||
-rw-r--r-- | main/asterisk.c | 5 |
3 files changed, 11 insertions, 1 deletions
diff --git a/bootstrap.sh b/bootstrap.sh index 6ca277df2..3497e24e6 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 e239e8a1a..3b6a3a63d 100644 --- a/configure.ac +++ b/configure.ac @@ -540,7 +540,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 <sys/socket.h>]) +AC_CHECK_MEMBERS([struct ucred.uid, struct ucred.cr_uid, struct sockpeercred.uid], [], [], [#include <sys/types.h> +#include <sys/socket.h> ]) AC_CHECK_MEMBERS([struct ifreq.ifr_ifru.ifru_hwaddr], [], [], [#include <net/if.h>]) AC_HEADER_TIME AC_STRUCT_TM diff --git a/main/asterisk.c b/main/asterisk.c index 9473fc986..12dc6483e 100644 --- a/main/asterisk.c +++ b/main/asterisk.c @@ -1200,7 +1200,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) |