1
0
mirror of https://github.com/nmap/nmap.git synced 2025-12-06 04:31:29 +00:00

Revert r5485. This changes the pcre Lua module back to statically linked

code instead of a dynamically loaded C module. Linking the dynamic
shared module with the static libpcre.a was failing on OpenBSD. See
http://seclists.org/nmap-dev/2007/q4/0085.html.
This commit is contained in:
david
2007-10-23 00:45:00 +00:00
parent d41f9ee095
commit 83382600f2
10 changed files with 58 additions and 161 deletions

View File

@@ -60,9 +60,9 @@ BUILDUMIT=@BUILDUMIT@
INSTALLUMIT=@INSTALLUMIT@
ifneq (@LIBLUA_LIBS@,)
NSE_SRC=nse_main.cc nse_auxiliar.cc nse_nsock.cc nse_init.cc nse_nmaplib.cc nse_debug.cc nse_string.cc
NSE_HDRS=nse_main.h nse_auxiliar.h nse_nsock.h nse_init.h nse_nmaplib.h nse_debug.h nse_macros.h nse_string.h
NSE_OBJS=nse_main.o nse_auxiliar.o nse_nsock.o nse_init.o nse_nmaplib.o nse_debug.o nse_string.o
NSE_SRC=nse_main.cc nse_auxiliar.cc nse_nsock.cc nse_init.cc nse_nmaplib.cc nse_debug.cc nse_pcrelib.cc nse_string.cc
NSE_HDRS=nse_main.h nse_auxiliar.h nse_nsock.h nse_init.h nse_nmaplib.h nse_debug.h nse_macros.h nse_pcrelib.h nse_string.h
NSE_OBJS=nse_main.o nse_auxiliar.o nse_nsock.o nse_init.o nse_nmaplib.o nse_debug.o nse_pcrelib.o nse_string.o
NSESTDLIB=nsestdlib
endif

View File

@@ -285,6 +285,10 @@
RelativePath="..\nse_nsock.cc"
>
</File>
<File
RelativePath="..\nse_pcrelib.cc"
>
</File>
<File
RelativePath="..\nse_string.cc"
>
@@ -470,6 +474,10 @@
RelativePath="..\nse_nsock.h"
>
</File>
<File
RelativePath="..\nse_pcrelib.h"
>
</File>
<File
RelativePath="..\nse_string.h"
>

View File

@@ -4,6 +4,7 @@
#include "nse_debug.h"
// 3rd Party libs
#include "nse_pcrelib.h"
#include "nbase.h"
@@ -45,6 +46,7 @@ int init_lua(lua_State* l) {
{LUA_STRLIBNAME, luaopen_string},
{LUA_MATHLIBNAME, luaopen_math},
{LUA_DBLIBNAME, luaopen_debug},
{NSE_PCRELIBNAME, luaopen_pcrelib},
{NULL, NULL}
};

View File

@@ -6,37 +6,19 @@
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <stdarg.h>
#ifdef __cplusplus
extern "C" {
#endif
#include "lua.h"
#include "lauxlib.h"
#ifdef __cplusplus
}
#endif
#include <locale.h>
#include <pcre.h>
#include "pcre.h"
#include "nbase.h"
#include "nmap_error.h"
static int Snprintf(char *s, size_t n, const char *fmt, ...)
{
va_list ap;
int ret;
va_start(ap, fmt);
ret = vsnprintf(s, n, fmt, ap);
va_end(ap);
if (ret < 0 || (unsigned) ret >= n)
s[n - 1] = '\0';
return ret;
}
#include "nse_pcrelib.h"
static void L_lua_error(lua_State *L, const char *message)
{
@@ -52,7 +34,7 @@ static int get_startoffset(lua_State *L, int stackpos, size_t len)
if(startoffset > 0)
startoffset--;
else if(startoffset < 0) {
startoffset += (int) len;
startoffset += len;
if(startoffset < 0)
startoffset = 0;
}
@@ -66,11 +48,11 @@ static int udata_tostring (lua_State *L, const char* type_handle,
void *udata = luaL_checkudata(L, 1, type_handle);
if(udata) {
(void)Snprintf(buf, 255, "%s (%p)", type_name, udata);
(void)snprintf(buf, 255, "%s (%p)", type_name, udata);
lua_pushstring(L, buf);
}
else {
(void)Snprintf(buf, 255, "must be userdata of type '%s'", type_name);
(void)snprintf(buf, 255, "must be userdata of type '%s'", type_name);
(void)luaL_argerror(L, 1, buf);
}
@@ -156,7 +138,7 @@ static int Lpcre_comp(lua_State *L)
ud->pr = pcre_compile(pattern, cflags, &error, &erroffset, tables);
if(!ud->pr) {
(void)Snprintf(buf, 255, "%s (pattern offset: %d)", error, erroffset+1);
(void)snprintf(buf, 255, "%s (pattern offset: %d)", error, erroffset+1);
/* show offset 1-based as it's common in Lua */
L_lua_error(L, buf);
}
@@ -165,17 +147,9 @@ static int Lpcre_comp(lua_State *L)
if(error) L_lua_error(L, error);
pcre_fullinfo(ud->pr, ud->extra, PCRE_INFO_CAPTURECOUNT, &ud->ncapt);
/* since some platforms have problems with nbase and exporting symbols we
* emulate it
*/
if(((ud->ncapt + 1) * 3 * sizeof(int))<0){
L_lua_error(L, "PCRE: negative argument to malloc");
}
/* need (2 ints per capture, plus one for substring match) * 3/2 */
ud->match = (int *) malloc((ud->ncapt + 1) * 3 * sizeof(int));
if(ud->match==NULL){
L_lua_error(L, "PCRE: malloc failed!");
}
ud->match = (int *) safe_malloc((ud->ncapt + 1) * 3 * sizeof(int));
return 1;
}
@@ -388,7 +362,7 @@ static const luaL_reg pcrelib[] = {
{NULL, NULL}
};
LUALIB_API int luaopen_pcre(lua_State *L)
LUALIB_API int luaopen_pcrelib(lua_State *L)
{
createmeta(L, pcre_handle);
luaL_openlib(L, NULL, pcremeta, 0);

9
nse_pcrelib.h Normal file
View File

@@ -0,0 +1,9 @@
#ifndef NSE_PCRELIB
#define NSE_PCRELIB
#define NSE_PCRELIBNAME "pcre"
LUALIB_API int luaopen_pcrelib (lua_State *L);
#endif

View File

@@ -12,21 +12,15 @@ INSTALL = $(SHTOOL) install
LIBTOOL= ./libtool
LTFLAGS = --tag=CC --silent
all: bit.so pcre.so
all: bit.so
bit.so: bit.c @LIBTOOL_DEPS@
$(LIBTOOL) $(LTFLAGS) --mode=compile $(CC) @LUAINCLUDE@ $(CFLAGS) -c bit.c
$(LIBTOOL) $(LTFLAGS) --mode=link $(CC) -avoid-version -module -rpath /usr/local/lib -o bit.la bit.lo
mv .libs/bit.so bit.so
pcre.so: pcre.c @LIBTOOL_DEPS@
$(LIBTOOL) $(LTFLAGS) --mode=compile $(CC) @PCRE_INCLUDE@ @LUAINCLUDE@ $(CFLAGS) -c pcre.c
$(LIBTOOL) $(LTFLAGS) --mode=link $(CC) @PCRE_LD@ @PCRE_LIBS@ -avoid-version -module -rpath /usr/local/lib -o pcre.la pcre.lo
mv .libs/pcre.so pcre.so
clean:
rm -f bit.so pcre.so *.la *.lo
rm -f bit.so *.la *.lo
rm -rf .libs
distclean: clean

90
nselib/configure vendored
View File

@@ -837,9 +837,6 @@ ac_ct_F77
LIBTOOL
LIBTOOL_DEPS
LUAINCLUDE
PCRE_INCLUDE
PCRE_LD
PCRE_LIBS
LIBOBJS
LTLIBOBJS'
ac_subst_files=''
@@ -1443,9 +1440,6 @@ Optional Packages:
--with-pic try to use only PIC/non-PIC objects [default=use
both]
--with-tags[=TAGS] include additional configurations [automatic]
--with-libpcre=DIR Use an existing (compiled) pcre lib from DIR/include
and DIR/lib.
--with-libpcre=included Always use the version included with Nmap
Some influential environment variables:
CC C compiler command
@@ -3637,7 +3631,7 @@ ia64-*-hpux*)
;;
*-*-irix6*)
# Find out which ABI we are using.
echo '#line 3640 "configure"' > conftest.$ac_ext
echo '#line 3634 "configure"' > conftest.$ac_ext
if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
(eval $ac_compile) 2>&5
ac_status=$?
@@ -6259,11 +6253,11 @@ else
-e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-e 's:$: $lt_compiler_flag:'`
(eval echo "\"\$as_me:6262: $lt_compile\"" >&5)
(eval echo "\"\$as_me:6256: $lt_compile\"" >&5)
(eval "$lt_compile" 2>conftest.err)
ac_status=$?
cat conftest.err >&5
echo "$as_me:6266: \$? = $ac_status" >&5
echo "$as_me:6260: \$? = $ac_status" >&5
if (exit $ac_status) && test -s "$ac_outfile"; then
# The compiler can only warn and ignore the option if not recognized
# So say no if there are warnings other than the usual output.
@@ -6527,11 +6521,11 @@ else
-e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-e 's:$: $lt_compiler_flag:'`
(eval echo "\"\$as_me:6530: $lt_compile\"" >&5)
(eval echo "\"\$as_me:6524: $lt_compile\"" >&5)
(eval "$lt_compile" 2>conftest.err)
ac_status=$?
cat conftest.err >&5
echo "$as_me:6534: \$? = $ac_status" >&5
echo "$as_me:6528: \$? = $ac_status" >&5
if (exit $ac_status) && test -s "$ac_outfile"; then
# The compiler can only warn and ignore the option if not recognized
# So say no if there are warnings other than the usual output.
@@ -6631,11 +6625,11 @@ else
-e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-e 's:$: $lt_compiler_flag:'`
(eval echo "\"\$as_me:6634: $lt_compile\"" >&5)
(eval echo "\"\$as_me:6628: $lt_compile\"" >&5)
(eval "$lt_compile" 2>out/conftest.err)
ac_status=$?
cat out/conftest.err >&5
echo "$as_me:6638: \$? = $ac_status" >&5
echo "$as_me:6632: \$? = $ac_status" >&5
if (exit $ac_status) && test -s out/conftest2.$ac_objext
then
# The compiler can only warn and ignore the option if not recognized
@@ -8928,7 +8922,7 @@ else
lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
lt_status=$lt_dlunknown
cat > conftest.$ac_ext <<EOF
#line 8931 "configure"
#line 8925 "configure"
#include "confdefs.h"
#if HAVE_DLFCN_H
@@ -9028,7 +9022,7 @@ else
lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
lt_status=$lt_dlunknown
cat > conftest.$ac_ext <<EOF
#line 9031 "configure"
#line 9025 "configure"
#include "confdefs.h"
#if HAVE_DLFCN_H
@@ -11368,11 +11362,11 @@ else
-e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-e 's:$: $lt_compiler_flag:'`
(eval echo "\"\$as_me:11371: $lt_compile\"" >&5)
(eval echo "\"\$as_me:11365: $lt_compile\"" >&5)
(eval "$lt_compile" 2>conftest.err)
ac_status=$?
cat conftest.err >&5
echo "$as_me:11375: \$? = $ac_status" >&5
echo "$as_me:11369: \$? = $ac_status" >&5
if (exit $ac_status) && test -s "$ac_outfile"; then
# The compiler can only warn and ignore the option if not recognized
# So say no if there are warnings other than the usual output.
@@ -11472,11 +11466,11 @@ else
-e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-e 's:$: $lt_compiler_flag:'`
(eval echo "\"\$as_me:11475: $lt_compile\"" >&5)
(eval echo "\"\$as_me:11469: $lt_compile\"" >&5)
(eval "$lt_compile" 2>out/conftest.err)
ac_status=$?
cat out/conftest.err >&5
echo "$as_me:11479: \$? = $ac_status" >&5
echo "$as_me:11473: \$? = $ac_status" >&5
if (exit $ac_status) && test -s out/conftest2.$ac_objext
then
# The compiler can only warn and ignore the option if not recognized
@@ -13033,11 +13027,11 @@ else
-e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-e 's:$: $lt_compiler_flag:'`
(eval echo "\"\$as_me:13036: $lt_compile\"" >&5)
(eval echo "\"\$as_me:13030: $lt_compile\"" >&5)
(eval "$lt_compile" 2>conftest.err)
ac_status=$?
cat conftest.err >&5
echo "$as_me:13040: \$? = $ac_status" >&5
echo "$as_me:13034: \$? = $ac_status" >&5
if (exit $ac_status) && test -s "$ac_outfile"; then
# The compiler can only warn and ignore the option if not recognized
# So say no if there are warnings other than the usual output.
@@ -13137,11 +13131,11 @@ else
-e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-e 's:$: $lt_compiler_flag:'`
(eval echo "\"\$as_me:13140: $lt_compile\"" >&5)
(eval echo "\"\$as_me:13134: $lt_compile\"" >&5)
(eval "$lt_compile" 2>out/conftest.err)
ac_status=$?
cat out/conftest.err >&5
echo "$as_me:13144: \$? = $ac_status" >&5
echo "$as_me:13138: \$? = $ac_status" >&5
if (exit $ac_status) && test -s out/conftest2.$ac_objext
then
# The compiler can only warn and ignore the option if not recognized
@@ -15328,11 +15322,11 @@ else
-e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-e 's:$: $lt_compiler_flag:'`
(eval echo "\"\$as_me:15331: $lt_compile\"" >&5)
(eval echo "\"\$as_me:15325: $lt_compile\"" >&5)
(eval "$lt_compile" 2>conftest.err)
ac_status=$?
cat conftest.err >&5
echo "$as_me:15335: \$? = $ac_status" >&5
echo "$as_me:15329: \$? = $ac_status" >&5
if (exit $ac_status) && test -s "$ac_outfile"; then
# The compiler can only warn and ignore the option if not recognized
# So say no if there are warnings other than the usual output.
@@ -15596,11 +15590,11 @@ else
-e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-e 's:$: $lt_compiler_flag:'`
(eval echo "\"\$as_me:15599: $lt_compile\"" >&5)
(eval echo "\"\$as_me:15593: $lt_compile\"" >&5)
(eval "$lt_compile" 2>conftest.err)
ac_status=$?
cat conftest.err >&5
echo "$as_me:15603: \$? = $ac_status" >&5
echo "$as_me:15597: \$? = $ac_status" >&5
if (exit $ac_status) && test -s "$ac_outfile"; then
# The compiler can only warn and ignore the option if not recognized
# So say no if there are warnings other than the usual output.
@@ -15700,11 +15694,11 @@ else
-e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-e 's:$: $lt_compiler_flag:'`
(eval echo "\"\$as_me:15703: $lt_compile\"" >&5)
(eval echo "\"\$as_me:15697: $lt_compile\"" >&5)
(eval "$lt_compile" 2>out/conftest.err)
ac_status=$?
cat out/conftest.err >&5
echo "$as_me:15707: \$? = $ac_status" >&5
echo "$as_me:15701: \$? = $ac_status" >&5
if (exit $ac_status) && test -s out/conftest2.$ac_objext
then
# The compiler can only warn and ignore the option if not recognized
@@ -18529,39 +18523,6 @@ fi
#needed for pcre - libpcre
# First we test whether they specified libpcre explicitly
# Check whether --with-libpcre was given.
if test "${with_libpcre+set}" = set; then
withval=$with_libpcre; case "$with_libpcre" in
yes)
;;
included)
PCRE_INCLUDE_DIR="../libpcre"
PCRE_LD_DIR="../libpcre"
;;
*)
PCRE_INCLUDE_DIR="$with_libpcre/include"
PCRE_LD_DIR="$with_libpcre/lib"
;;
esac
else
PCRE_INCLUDE_DIR="../libpcre";PCRE_LD_DIR="../libpcre"
fi
PCRE_INCLUDE="-I$PCRE_INCLUDE_DIR"
PCRE_LD="-L$PCRE_LD_DIR"
PCRE_LIBS="-lpcre"
# AC_SUBST(PCREDIR)
ac_config_files="$ac_config_files Makefile"
cat >confcache <<\_ACEOF
@@ -19262,14 +19223,11 @@ ac_ct_F77!$ac_ct_F77$ac_delim
LIBTOOL!$LIBTOOL$ac_delim
LIBTOOL_DEPS!$LIBTOOL_DEPS$ac_delim
LUAINCLUDE!$LUAINCLUDE$ac_delim
PCRE_INCLUDE!$PCRE_INCLUDE$ac_delim
PCRE_LD!$PCRE_LD$ac_delim
PCRE_LIBS!$PCRE_LIBS$ac_delim
LIBOBJS!$LIBOBJS$ac_delim
LTLIBOBJS!$LTLIBOBJS$ac_delim
_ACEOF
if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.sed | grep -c X` = 75; then
if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.sed | grep -c X` = 72; then
break
elif $ac_last_try; then
{ { echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5

View File

@@ -19,36 +19,6 @@ AC_CANONICAL_HOST
AC_CHECK_HEADER([lua.h],,[AC_MSG_NOTICE(using lua-includefiles provided with nmap);[LUAINCLUDE=-I../liblua/]],)
AC_SUBST(LUAINCLUDE)
#needed for pcre - libpcre
# First we test whether they specified libpcre explicitly
AC_ARG_WITH(libpcre,
AC_HELP_STRING([--with-libpcre=DIR], [Use an existing (compiled) pcre lib from DIR/include and DIR/lib.])
AC_HELP_STRING([--with-libpcre=included], [Always use the version included with Nmap]),
[ case "$with_libpcre" in
yes)
;;
included)
PCRE_INCLUDE_DIR="../libpcre"
PCRE_LD_DIR="../libpcre"
;;
*)
PCRE_INCLUDE_DIR="$with_libpcre/include"
PCRE_LD_DIR="$with_libpcre/lib"
;;
esac],
[PCRE_INCLUDE_DIR="../libpcre";PCRE_LD_DIR="../libpcre"]
)
PCRE_INCLUDE="-I$PCRE_INCLUDE_DIR"
PCRE_LD="-L$PCRE_LD_DIR"
PCRE_LIBS="-lpcre"
# AC_SUBST(PCREDIR)
AC_SUBST(PCRE_INCLUDE)
AC_SUBST(PCRE_LD)
AC_SUBST(PCRE_LIBS)
AC_CONFIG_FILES([Makefile])
AC_OUTPUT

View File

@@ -1,17 +0,0 @@
#ifndef PCRE_H
#define PCRE_H
#ifdef WIN32
#define _CRT_SECURE_NO_DEPRECATE 1
#define _CRT_SECURE_NO_WARNINGS 1 /* otherwise msvc++ complains even for
safe operations, and request us to use their str*_s() functions */
#pragma warning(disable: 4996)
#define vsnprintf _vsnprintf
#define strdup _strdup
#endif /* WIN32 */
#define NSE_PCRELIBNAME "pcre"
LUALIB_API int luaopen_pcre(lua_State *L);
#endif

View File

@@ -10,7 +10,6 @@ categories = {"discovery"}
require("stdnse")
require "shortport"
require "pcre"
portrule = shortport.port_or_service(6667, "irc")