Skip to content

Commit

Permalink
check_expr2: fix cross-compile/hardening issues
Browse files Browse the repository at this point in the history
When building check_expr2 with ASLR PIE hardening enabled the linker
fails. This is resolved by adding the regular compiler flags when
building the object files from ast_expr2f.c and ast_expr2.c.

Note: The STANDALONE define is removed because it is already defined in
_ASTCFLAGS. YY_NO_INPUT is defined so that the compile survives
'--enable-dev-mode'.

Also, a Makefile variable "CROSS_COMPILING" is added so that the
build system doesn't try to run check_expr2 when cross-compiling,
because that will fail the build as will.

ASTERISK-28685 #close

Signed-off-by: Sebastian Kemper <sebastian_ml@gmx.net>
Change-Id: If435b7db9f9ad8266245bda51c81c220f9658915
  • Loading branch information
micmac1 committed Feb 26, 2020
1 parent 8385837 commit b7fbb9c
Show file tree
Hide file tree
Showing 5 changed files with 58 additions and 73 deletions.
99 changes: 45 additions & 54 deletions configure
Expand Up @@ -1282,6 +1282,7 @@ SED
CXXCPP
ac_ct_CXX
CXXFLAGS
CROSS_COMPILING
RANLIB
LD
CXX
Expand Down Expand Up @@ -1350,7 +1351,6 @@ infodir
docdir
oldincludedir
includedir
runstatedir
localstatedir
sharedstatedir
sysconfdir
Expand Down Expand Up @@ -1539,7 +1539,6 @@ datadir='${datarootdir}'
sysconfdir='${prefix}/etc'
sharedstatedir='${prefix}/com'
localstatedir='${prefix}/var'
runstatedir='${localstatedir}/run'
includedir='${prefix}/include'
oldincludedir='/usr/include'
docdir='${datarootdir}/doc/${PACKAGE_TARNAME}'
Expand Down Expand Up @@ -1792,15 +1791,6 @@ do
| -silent | --silent | --silen | --sile | --sil)
silent=yes ;;

-runstatedir | --runstatedir | --runstatedi | --runstated \
| --runstate | --runstat | --runsta | --runst | --runs \
| --run | --ru | --r)
ac_prev=runstatedir ;;
-runstatedir=* | --runstatedir=* | --runstatedi=* | --runstated=* \
| --runstate=* | --runstat=* | --runsta=* | --runst=* | --runs=* \
| --run=* | --ru=* | --r=*)
runstatedir=$ac_optarg ;;

-sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb)
ac_prev=sbindir ;;
-sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \
Expand Down Expand Up @@ -1938,7 +1928,7 @@ fi
for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \
datadir sysconfdir sharedstatedir localstatedir includedir \
oldincludedir docdir infodir htmldir dvidir pdfdir psdir \
libdir localedir mandir runstatedir
libdir localedir mandir
do
eval ac_val=\$$ac_var
# Remove trailing slashes.
Expand Down Expand Up @@ -2091,7 +2081,6 @@ Fine tuning of the installation directories:
--sysconfdir=DIR read-only single-machine data [PREFIX/etc]
--sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com]
--localstatedir=DIR modifiable single-machine data [PREFIX/var]
--runstatedir=DIR modifiable per-process data [LOCALSTATEDIR/run]
--libdir=DIR object code libraries [EPREFIX/lib]
--includedir=DIR C header files [PREFIX/include]
--oldincludedir=DIR C header files for non-gcc [/usr/include]
Expand Down Expand Up @@ -5342,6 +5331,8 @@ else
RANLIB="$ac_cv_prog_RANLIB"
fi

CROSS_COMPILING=1

fi

# Checks for programs.
Expand Down Expand Up @@ -13644,8 +13635,8 @@ fi
if test "x${PBX_LIBEDIT}" != "x1" -a "${USE_LIBEDIT}" != "no"; then

pkg_failed=no
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for LIBEDIT" >&5
$as_echo_n "checking for LIBEDIT... " >&6; }
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for libedit" >&5
$as_echo_n "checking for libedit... " >&6; }

if test -n "$LIBEDIT_CFLAGS"; then
pkg_cv_LIBEDIT_CFLAGS="$LIBEDIT_CFLAGS"
Expand Down Expand Up @@ -13685,7 +13676,7 @@ fi


if test $pkg_failed = yes; then
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
$as_echo "no" >&6; }

if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
Expand All @@ -13706,7 +13697,7 @@ fi


elif test $pkg_failed = untried; then
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
$as_echo "no" >&6; }

PBX_LIBEDIT=0
Expand Down Expand Up @@ -14104,8 +14095,8 @@ if test "$JANSSON_BUNDLED" = "no" ; then
if test "x${PBX_JANSSON}" != "x1" -a "${USE_JANSSON}" != "no"; then

pkg_failed=no
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for JANSSON" >&5
$as_echo_n "checking for JANSSON... " >&6; }
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for jansson >= 2.11" >&5
$as_echo_n "checking for jansson >= 2.11... " >&6; }

if test -n "$JANSSON_CFLAGS"; then
pkg_cv_JANSSON_CFLAGS="$JANSSON_CFLAGS"
Expand Down Expand Up @@ -14145,7 +14136,7 @@ fi


if test $pkg_failed = yes; then
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
$as_echo "no" >&6; }

if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
Expand All @@ -14166,7 +14157,7 @@ fi


elif test $pkg_failed = untried; then
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
$as_echo "no" >&6; }

PBX_JANSSON=0
Expand Down Expand Up @@ -14961,7 +14952,7 @@ else
We can't simply define LARGE_OFF_T to be 9223372036854775807,
since some C++ compilers masquerading as C compilers
incorrectly reject 9223372036854775807. */
#define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31))
#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
&& LARGE_OFF_T % 2147483647 == 1)
? 1 : -1];
Expand Down Expand Up @@ -15007,7 +14998,7 @@ else
We can't simply define LARGE_OFF_T to be 9223372036854775807,
since some C++ compilers masquerading as C compilers
incorrectly reject 9223372036854775807. */
#define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31))
#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
&& LARGE_OFF_T % 2147483647 == 1)
? 1 : -1];
Expand All @@ -15031,7 +15022,7 @@ rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
We can't simply define LARGE_OFF_T to be 9223372036854775807,
since some C++ compilers masquerading as C compilers
incorrectly reject 9223372036854775807. */
#define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31))
#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
&& LARGE_OFF_T % 2147483647 == 1)
? 1 : -1];
Expand Down Expand Up @@ -15076,7 +15067,7 @@ else
We can't simply define LARGE_OFF_T to be 9223372036854775807,
since some C++ compilers masquerading as C compilers
incorrectly reject 9223372036854775807. */
#define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31))
#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
&& LARGE_OFF_T % 2147483647 == 1)
? 1 : -1];
Expand All @@ -15100,7 +15091,7 @@ rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
We can't simply define LARGE_OFF_T to be 9223372036854775807,
since some C++ compilers masquerading as C compilers
incorrectly reject 9223372036854775807. */
#define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31))
#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
&& LARGE_OFF_T % 2147483647 == 1)
? 1 : -1];
Expand Down Expand Up @@ -20792,8 +20783,8 @@ if test "${USE_ILBC}" != "no"; then
if test "x${PBX_ILBC}" != "x1" -a "${USE_ILBC}" != "no"; then

pkg_failed=no
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for ILBC" >&5
$as_echo_n "checking for ILBC... " >&6; }
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for libilbc" >&5
$as_echo_n "checking for libilbc... " >&6; }

if test -n "$ILBC_CFLAGS"; then
pkg_cv_ILBC_CFLAGS="$ILBC_CFLAGS"
Expand Down Expand Up @@ -20833,7 +20824,7 @@ fi


if test $pkg_failed = yes; then
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
$as_echo "no" >&6; }

if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
Expand All @@ -20854,7 +20845,7 @@ fi


elif test $pkg_failed = untried; then
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
$as_echo "no" >&6; }

PBX_ILBC=0
Expand Down Expand Up @@ -25033,8 +25024,8 @@ if test "$USE_PJPROJECT" != "no" ; then
if test "x${PBX_PJPROJECT}" != "x1" -a "${USE_PJPROJECT}" != "no"; then

pkg_failed=no
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for PJPROJECT" >&5
$as_echo_n "checking for PJPROJECT... " >&6; }
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for libpjproject" >&5
$as_echo_n "checking for libpjproject... " >&6; }

if test -n "$PJPROJECT_CFLAGS"; then
pkg_cv_PJPROJECT_CFLAGS="$PJPROJECT_CFLAGS"
Expand Down Expand Up @@ -25074,7 +25065,7 @@ fi


if test $pkg_failed = yes; then
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
$as_echo "no" >&6; }

if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
Expand All @@ -25095,7 +25086,7 @@ fi


elif test $pkg_failed = untried; then
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
$as_echo "no" >&6; }

PBX_PJPROJECT=0
Expand Down Expand Up @@ -26284,8 +26275,8 @@ fi
if test "x${PBX_PYTHONDEV}" != "x1" -a "${USE_PYTHONDEV}" != "no"; then

pkg_failed=no
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for PYTHONDEV" >&5
$as_echo_n "checking for PYTHONDEV... " >&6; }
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for python" >&5
$as_echo_n "checking for python... " >&6; }

if test -n "$PYTHONDEV_CFLAGS"; then
pkg_cv_PYTHONDEV_CFLAGS="$PYTHONDEV_CFLAGS"
Expand Down Expand Up @@ -26325,7 +26316,7 @@ fi


if test $pkg_failed = yes; then
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
$as_echo "no" >&6; }

if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
Expand All @@ -26346,7 +26337,7 @@ fi


elif test $pkg_failed = untried; then
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
$as_echo "no" >&6; }

PBX_PYTHONDEV=0
Expand Down Expand Up @@ -26470,8 +26461,8 @@ fi
if test "x${PBX_PORTAUDIO}" != "x1" -a "${USE_PORTAUDIO}" != "no"; then

pkg_failed=no
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for PORTAUDIO" >&5
$as_echo_n "checking for PORTAUDIO... " >&6; }
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for portaudio-2.0" >&5
$as_echo_n "checking for portaudio-2.0... " >&6; }

if test -n "$PORTAUDIO_CFLAGS"; then
pkg_cv_PORTAUDIO_CFLAGS="$PORTAUDIO_CFLAGS"
Expand Down Expand Up @@ -26511,7 +26502,7 @@ fi


if test $pkg_failed = yes; then
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
$as_echo "no" >&6; }

if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
Expand All @@ -26532,7 +26523,7 @@ fi


elif test $pkg_failed = untried; then
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
$as_echo "no" >&6; }

PBX_PORTAUDIO=0
Expand Down Expand Up @@ -32770,8 +32761,8 @@ for ver in 2.0 2.2 2.4 2.6 3.0; do
if test "x${PBX_GMIME}" != "x1" -a "${USE_GMIME}" != "no"; then

pkg_failed=no
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for GMIME" >&5
$as_echo_n "checking for GMIME... " >&6; }
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for gmime-$ver" >&5
$as_echo_n "checking for gmime-$ver... " >&6; }

if test -n "$GMIME_CFLAGS"; then
pkg_cv_GMIME_CFLAGS="$GMIME_CFLAGS"
Expand Down Expand Up @@ -32811,7 +32802,7 @@ fi


if test $pkg_failed = yes; then
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
$as_echo "no" >&6; }

if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
Expand All @@ -32832,7 +32823,7 @@ fi


elif test $pkg_failed = untried; then
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
$as_echo "no" >&6; }

PBX_GMIME=0
Expand Down Expand Up @@ -34207,8 +34198,8 @@ fi
if test "x${PBX_GTK2}" != "x1" -a "${USE_GTK2}" != "no"; then

pkg_failed=no
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for GTK2" >&5
$as_echo_n "checking for GTK2... " >&6; }
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for gtk+-2.0" >&5
$as_echo_n "checking for gtk+-2.0... " >&6; }

if test -n "$GTK2_CFLAGS"; then
pkg_cv_GTK2_CFLAGS="$GTK2_CFLAGS"
Expand Down Expand Up @@ -34248,7 +34239,7 @@ fi


if test $pkg_failed = yes; then
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
$as_echo "no" >&6; }

if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
Expand All @@ -34269,7 +34260,7 @@ fi


elif test $pkg_failed = untried; then
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
$as_echo "no" >&6; }

PBX_GTK2=0
Expand Down Expand Up @@ -34318,8 +34309,8 @@ fi
if test "x${PBX_SYSTEMD}" != "x1" -a "${USE_SYSTEMD}" != "no"; then

pkg_failed=no
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for SYSTEMD" >&5
$as_echo_n "checking for SYSTEMD... " >&6; }
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for libsystemd" >&5
$as_echo_n "checking for libsystemd... " >&6; }

if test -n "$SYSTEMD_CFLAGS"; then
pkg_cv_SYSTEMD_CFLAGS="$SYSTEMD_CFLAGS"
Expand Down Expand Up @@ -34359,7 +34350,7 @@ fi


if test $pkg_failed = yes; then
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
$as_echo "no" >&6; }

if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
Expand All @@ -34380,7 +34371,7 @@ fi


elif test $pkg_failed = untried; then
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
$as_echo "no" >&6; }

PBX_SYSTEMD=0
Expand Down
2 changes: 2 additions & 0 deletions configure.ac
Expand Up @@ -230,6 +230,8 @@ then
AC_CHECK_TOOL(CXX, g++, :)
AC_CHECK_TOOL(LD, ld, :)
AC_CHECK_TOOL(RANLIB, ranlib, :)
CROSS_COMPILING=1
AC_SUBST(CROSS_COMPILING)
fi

# Checks for programs.
Expand Down
2 changes: 2 additions & 0 deletions makeopts.in
Expand Up @@ -66,6 +66,8 @@ OSREV=@PBX_OSREV@

BIND8_CFLAGS=@BIND8_CFLAGS@

CROSS_COMPILING=@CROSS_COMPILING@

PTHREAD_CFLAGS=@PTHREAD_CFLAGS@
PTHREAD_LIBS=@PTHREAD_LIBS@

Expand Down

0 comments on commit b7fbb9c

Please sign in to comment.