00-README.conf               |   2 +-
 Makefile.common              |   4 ++--
 README                       |  16 ++++++++++++----
 configure.ac                 |  18 ++++++++++++++++++
 tools/cluster_sim_uml/README |   2 +-
 5 files changed, 34 insertions(+), 8 deletions(-)


By default, build with the extra hardening flags "-D_FORTIFY_SOURCE=2
-fstack-protector" for improved security and enhanced run-time error
detection. The flags can be overridden by setting the environment variable
OSAF_HARDEN_FLAGS when building OpenSAF.

Note that -D_FORTIFY_SOURCE=2 is only enabled in optimized builds. To reduce the
risk that a user accidentally builds without optimization by overriding the
default CFLAGS and/or CXXFLAGS, the README files have been updated to recommend
passing preprocessor definitions using CPPFLAGS instead of CFLAGS.

diff --git a/00-README.conf b/00-README.conf
--- a/00-README.conf
+++ b/00-README.conf
@@ -85,7 +85,7 @@ file does not have to be changed unless:
 - OpenSAF should run as a different UNIX group and user than the default 
'opensaf'
   group/user.
 
-       If OpenSAF was built with the flags "CFLAGS=-DRUNASROOT", then
+       If OpenSAF was built with the flags "CPPFLAGS=-DRUNASROOT", then
        change OPENSAF_GROUP and OPENSAF_USER to root i.e. for old (<4.2) 
behaviour.
 
        For any other user, change OPENSAF_GROUP and OPENSAF_USER accordingly
diff --git a/Makefile.common b/Makefile.common
--- a/Makefile.common
+++ b/Makefile.common
@@ -12,8 +12,8 @@ AM_CPPFLAGS = \
        $(CORE_INCLUDES) \
        $(all_includes)
 
-AM_CFLAGS = -Wall -fno-strict-aliasing -Werror -fPIC
-AM_CXXFLAGS = -Wall -fno-strict-aliasing -Werror -fPIC -D__STDC_FORMAT_MACROS
+AM_CFLAGS = -Wall -fno-strict-aliasing -Werror -fPIC @OSAF_HARDEN_FLAGS@
+AM_CXXFLAGS = -Wall -fno-strict-aliasing -Werror -fPIC -D__STDC_FORMAT_MACROS 
@OSAF_HARDEN_FLAGS@
 AM_LDFLAGS = -ldl -lrt -lpthread
 
 #
diff --git a/README b/README
--- a/README
+++ b/README
@@ -293,7 +293,7 @@ 1.1.1, 1.1.2 etc.
 To re-enable the old (pre 4.3) non flat addressing, configure the constant
 MDS_USE_SUBSLOT_ID=1 at configure time as in:
 
-    % ./configure CFLAGS="-DMDS_USE_SUBSLOT_ID=1 ..."
+    % ./configure CPPFLAGS="-DMDS_USE_SUBSLOT_ID=1 ..."
 
 In the non flat scheme, the slot ID is shifted up 4 bits and subslot ID is 
 added in the 4 LSB. The consequence of this is reduced number of
@@ -308,7 +308,7 @@ 2) Run as root (optional)
 If the old (<4.2) behaviour of running all processes as root is desired, use
 the following configure command:
 
-    % ./configure CFLAGS=-DRUNASROOT
+    % ./configure CPPFLAGS=-DRUNASROOT
 
 
 3) Configure TIPC importance (optional)
@@ -317,13 +317,21 @@ The default TIPC importance is LOW for a
 In some cases the default importance must be changed if e.g. an application 
starves the LOW importance communication level.
 To change the default importance, use the following configure command
 
-   % ./configure CFLAGS=-DTIPCIMPORTANCE=level
+   % ./configure CPPFLAGS=-DTIPCIMPORTANCE=level
    where level is any of TIPC_LOW_IMPORTANCE, TIPC_MEDIUM_IMPORTANCE or 
TIPC_HIGH_IMPORTANCE
-   e.g. configure CFLAGS=-DTIPCIMPORTANCE=TIPC_HIGH_IMPORTANCE
+   e.g. configure CPPFLAGS=-DTIPCIMPORTANCE=TIPC_HIGH_IMPORTANCE
 
 Note: Giving same importance to AVND & all other Opensaf models is not 
preferred option. The behavior is unsupported.
 
 
+4) Configure GCC hardening options (optional)
+
+By default, the options "-fstack-protector -D_FORTIFY_SOURCE=2" are passed to
+GCC for improved security. You can override these options by setting the
+OSAF_HARDEN_FLAGS when configuring OpenSAF. For example:
+
+   % ./configure OSAF_HARDEN_FLAGS="-fstack-protector-all -D_FORTIFY_SOURCE=2"
+
 If you are using a released archive (dist tarball) follow the simple common
 steps:
 
diff --git a/configure.ac b/configure.ac
--- a/configure.ac
+++ b/configure.ac
@@ -545,6 +545,22 @@ if test "$enable_imm_pbe" = yes; then
        PKG_CHECK_MODULES([SQLITE3], [sqlite3])
 fi
 
+if test -z "$OSAF_HARDEN_FLAGS"; then
+       # _FORTIFY_SOURCE requires optimization, so only enable it in optimized
+       # builds, i.e. when -O is present in both CFLAGS and CXXFLAGS.
+       if echo "${CFLAGS}" | grep -q -- -O; then
+               if echo "${CXXFLAGS}" | grep -q -- -O; then
+                       OSAF_HARDEN_FLAGS="-D_FORTIFY_SOURCE=2"
+               fi
+       fi
+       # Also check for -O0 (which explicitly disables optimisation)
+       if echo "${CFLAGS} ${CXXFLAGS}" | grep -q -- -O0; then
+               OSAF_HARDEN_FLAGS=""
+       fi
+       OSAF_HARDEN_FLAGS="${OSAF_HARDEN_FLAGS} -fstack-protector"
+fi
+AC_SUBST(OSAF_HARDEN_FLAGS)
+
 #############################################
 # Checks for header files.
 #############################################
@@ -925,8 +941,10 @@ echo ""
 echo " Compiling Options:"
 echo "${ECHO_T}  C Compiler: ${CC}"
 echo "${ECHO_T}  C++ Compiler: ${CXX}"
+echo "${ECHO_T}  CPPFLAGS: ${CPPFLAGS} ${AM_CPPFLAGS}"
 echo "${ECHO_T}  CFLAGS: ${CFLAGS} ${AM_CFLAGS}"
 echo "${ECHO_T}  CXXFLAGS: ${CXXFLAGS} ${AM_CXXFLAGS}"
+echo "${ECHO_T}  OSAF_HARDEN_FLAGS: ${OSAF_HARDEN_FLAGS}"
 echo "${ECHO_T}  LDFLAGS: ${LDFLAGS}"
 echo "${ECHO_T}  Enable RPATH: ${enable_rpath}"
 
diff --git a/tools/cluster_sim_uml/README b/tools/cluster_sim_uml/README
--- a/tools/cluster_sim_uml/README
+++ b/tools/cluster_sim_uml/README
@@ -77,7 +77,7 @@ When the UML root file system is generat
 DESTDIR set to the UML root file system. Make sure you have a default 
 configured Opensaf like this:
 
-$ ./configure CFLAGS=-DRUNASROOT
+$ ./configure CPPFLAGS=-DRUNASROOT
 
 - Execute './build_uml'.
 

------------------------------------------------------------------------------
Sponsored by Intel(R) XDK 
Develop, test and display web and hybrid apps with a single code base.
Download it for free now!
http://pubads.g.doubleclick.net/gampad/clk?id=111408631&iu=/4140/ostg.clktrk
_______________________________________________
Opensaf-devel mailing list
Opensaf-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/opensaf-devel

Reply via email to