Skip to content

Commit

Permalink
Make sure asterisk builds on OpenBSD
Browse files Browse the repository at this point in the history
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
  • Loading branch information
Kinsey Moore committed Jan 13, 2012
1 parent 9c16150 commit 76888b5
Show file tree
Hide file tree
Showing 3 changed files with 11 additions and 1 deletion.
4 changes: 4 additions & 0 deletions bootstrap.sh
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
3 changes: 2 additions & 1 deletion configure.ac
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
5 changes: 5 additions & 0 deletions main/asterisk.c
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand Down

0 comments on commit 76888b5

Please sign in to comment.