Nmap Development mailing list archives

[patch] openssl/md2 issue autoconf files configure.ac configure nse_openssl.cc


From: olli hauer <ohauer () gmx de>
Date: Fri, 20 Aug 2010 22:10:33 +0200

Hi,

I just saw on the list that the md2 code is already removed.

If it is not to late, please test attached patches for
configure.ac configure and nse_openssl.cc.

The patch for ./configure was build with autoconf-2.62.


PS:
Has someone a workaround if openssl is build with SCTP support?
I got the following build failure if SCTP is anabled in openssl.

In file included from /usr/local/include/openssl/dtls1.h:78,
                 from /usr/local/include/openssl/ssl.h:1193,
                 from service_scan.cc:106:
/usr/include/netinet/sctp.h:57: error: redefinition of 'struct sctp_chunkhdr'
./libdnet-stripped/include/dnet/sctp.h:39: error: previous definition of 'struct
sctp_chunkhdr'
gmake[1]: *** [service_scan.o] Error 1
gmake[1]: Leaving directory `/data/work/usr/ports/security/nmap/work/nmap-5.35DC1'
gmake: *** [all] Error 2
*** Error code 1


//olli


Index: nse_openssl.cc
=================================================
--- nse_openssl.cc
+++ nse_openssl.cc
@@ -8,7 +8,9 @@
 #include <openssl/crypto.h>
 #include <openssl/bn.h>
 #include <openssl/rand.h>
+#ifndef OPENSSL_NO_MD2
 #include <openssl/md2.h>
+#endif
 #include <openssl/md4.h>
 #include <openssl/md5.h>
 #include <openssl/sha.h>
@@ -219,6 +221,7 @@
   return 1;
 }

+#ifndef OPENSSL_NO_MD2
 static int l_md2(lua_State *L)     /** md2(string s) */
 {
   size_t len;
@@ -228,6 +231,7 @@
   lua_pushlstring( L, (char *) MD2( s, len, digest ), 16 );
   return 1;
 }
+#endif

 static int l_md4(lua_State *L)     /** md4(string s) */
 {
@@ -515,7 +519,9 @@
   { "bignum_mod_exp", l_bignum_mod_exp },
   { "rand_bytes", l_rand_bytes },
   { "rand_pseudo_bytes", l_rand_pseudo_bytes },
+#ifndef OPENSSL_NO_MD2
   { "md2", l_md2 },
+#endif
   { "md4", l_md4 },
   { "md5", l_md5 },
   { "sha1", l_sha1 },
Index: configure.ac
=================================================
--- configure.ac
+++ configure.ac
@@ -330,6 +330,15 @@
  fi
 fi

+OPENSSL_NO_MD2=
+if test "$use_openssl" = "yes"; then
+  AC_CHECK_HEADER(openssl/md2.h,,
+    AC_DEFINE(OPENSSL_NO_MD2)
+    [CPPFLAGS="$CPPFLAGS -DOPENSSL_NO_MD2"]
+  )
+  AC_SUBST(OPENSSL_NO_MD2)
+fi
+
 OPENSSL_LIBS=
 if test "$use_openssl" = "yes"; then
   AC_DEFINE(HAVE_OPENSSL)
Index: configure
=================================================
--- configure
+++ configure
@@ -675,6 +675,7 @@
 PCAP_BUILD
 PCAP_DEPENDS
 OPENSSL_LIBS
+OPENSSL_NO_MD2
 NPING_DIST_CLEAN
 NPING_CLEAN
 UNINSTALLNPING
@@ -7037,6 +7038,150 @@
  fi
 fi

+OPENSSL_NO_MD2=
+if test "$use_openssl" = "yes"; then
+  if test "${ac_cv_header_openssl_md2_h+set}" = set; then
+  { $as_echo "$as_me:$LINENO: checking for openssl/md2.h" >&5
+$as_echo_n "checking for openssl/md2.h... " >&6; }
+if test "${ac_cv_header_openssl_md2_h+set}" = set; then
+  $as_echo_n "(cached) " >&6
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_header_openssl_md2_h" >&5
+$as_echo "$ac_cv_header_openssl_md2_h" >&6; }
+else
+  # Is the header compilable?
+{ $as_echo "$as_me:$LINENO: checking openssl/md2.h usability" >&5
+$as_echo_n "checking openssl/md2.h usability... " >&6; }
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+$ac_includes_default
+#include <openssl/md2.h>
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+        test -z "$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  ac_header_compiler=yes
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+       ac_header_compiler=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+{ $as_echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
+$as_echo "$ac_header_compiler" >&6; }
+
+# Is the header present?
+{ $as_echo "$as_me:$LINENO: checking openssl/md2.h presence" >&5
+$as_echo_n "checking openssl/md2.h presence... " >&6; }
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <openssl/md2.h>
+_ACEOF
+if { (ac_try="$ac_cpp conftest.$ac_ext"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } >/dev/null && {
+        test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       }; then
+  ac_header_preproc=yes
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+  ac_header_preproc=no
+fi
+
+rm -f conftest.err conftest.$ac_ext
+{ $as_echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
+$as_echo "$ac_header_preproc" >&6; }
+
+# So?  What about this header?
+case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
+  yes:no: )
+    { $as_echo "$as_me:$LINENO: WARNING: openssl/md2.h: accepted by the
compiler, rejected by the preprocessor!" >&5
+$as_echo "$as_me: WARNING: openssl/md2.h: accepted by the compiler, rejected by
the preprocessor!" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: openssl/md2.h: proceeding with the
compiler's result" >&5
+$as_echo "$as_me: WARNING: openssl/md2.h: proceeding with the compiler's
result" >&2;}
+    ac_header_preproc=yes
+    ;;
+  no:yes:* )
+    { $as_echo "$as_me:$LINENO: WARNING: openssl/md2.h: present but cannot be
compiled" >&5
+$as_echo "$as_me: WARNING: openssl/md2.h: present but cannot be compiled" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: openssl/md2.h:     check for missing
prerequisite headers?" >&5
+$as_echo "$as_me: WARNING: openssl/md2.h:     check for missing prerequisite
headers?" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: openssl/md2.h: see the Autoconf
documentation" >&5
+$as_echo "$as_me: WARNING: openssl/md2.h: see the Autoconf documentation" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: openssl/md2.h:     section \"Present
But Cannot Be Compiled\"" >&5
+$as_echo "$as_me: WARNING: openssl/md2.h:     section \"Present But Cannot Be
Compiled\"" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: openssl/md2.h: proceeding with the
preprocessor's result" >&5
+$as_echo "$as_me: WARNING: openssl/md2.h: proceeding with the preprocessor's
result" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: openssl/md2.h: in the future, the
compiler will take precedence" >&5
+$as_echo "$as_me: WARNING: openssl/md2.h: in the future, the compiler will take
precedence" >&2;}
+
+    ;;
+esac
+{ $as_echo "$as_me:$LINENO: checking for openssl/md2.h" >&5
+$as_echo_n "checking for openssl/md2.h... " >&6; }
+if test "${ac_cv_header_openssl_md2_h+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  ac_cv_header_openssl_md2_h=$ac_header_preproc
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_header_openssl_md2_h" >&5
+$as_echo "$ac_cv_header_openssl_md2_h" >&6; }
+
+fi
+if test $ac_cv_header_openssl_md2_h = yes; then
+  :
+else
+  cat >>confdefs.h <<\_ACEOF
+#define OPENSSL_NO_MD2 1
+_ACEOF
+
+    CPPFLAGS="$CPPFLAGS -DOPENSSL_NO_MD2"
+
+fi
+
+
+
+fi
+
 OPENSSL_LIBS=
 if test "$use_openssl" = "yes"; then
   cat >>confdefs.h <<\_ACEOF



Attachment: patch-configure
Description:

Attachment: patch-nse_openssl.cc
Description:

Attachment: patch-configure.ac
Description:

_______________________________________________
Sent through the nmap-dev mailing list
http://cgi.insecure.org/mailman/listinfo/nmap-dev
Archived at http://seclists.org/nmap-dev/

Current thread: