diff --git a/configure b/configure index fe1ad71..a4dac46 100755 --- a/configure +++ b/configure @@ -26,6 +26,9 @@ usage() { echo "--libdir=/path default: $prefix/lib" echo "--includedir=/path default: $prefix/include" echo "--sysconfdir=/path default: $prefix/etc" + echo "--ignore-cve default: no" + echo " if set to yes ignores CVE-2015-3887 and makes it possible" + echo " to preload from current dir (insecure)" ismac && isx86_64 && echo "--fat-binary : build for both i386 and x86_64 architectures on 64-bit Macs" echo "--help : show this text" exit 1 @@ -39,7 +42,7 @@ spliteq() { } fat_binary= - +ignore_cve=no parsearg() { case "$1" in --prefix=*) prefix=`spliteq $1`;; @@ -48,6 +51,8 @@ parsearg() { --libdir=*) libdir=`spliteq $1`;; --includedir=*) includedir=`spliteq $1`;; --sysconfdir=*) sysconfdir=`spliteq $1`;; + --ignore-cve) ignore_cve=1;; + --ignore-cve=*) ignore_cve=`spliteq $1`;; --fat-binary) fat_binary=1;; --help) usage;; esac @@ -94,6 +99,7 @@ echo bindir=$bindir>>config.mak echo libdir=$libdir>>config.mak echo includedir=$includedir>>config.mak echo sysconfdir=$sysconfdir>>config.mak +[ "$ignore_cve" = "no" ] && echo CPPFLAGS+= -DSUPER_SECURE>>config.mak make_cmd=make if ismac ; then echo NO_AS_NEEDED=>>config.mak diff --git a/src/main.c b/src/main.c index 4a79fb8..36e9eea 100644 --- a/src/main.c +++ b/src/main.c @@ -33,7 +33,9 @@ static const char *dll_name = DLL_NAME; static char own_dir[256]; static const char *dll_dirs[] = { +#ifndef SUPER_SECURE /* CVE-2015-3887 */ ".", +#endif own_dir, LIB_DIR, "/lib", @@ -48,7 +50,11 @@ static void set_own_dir(const char *argv0) { while(l && argv0[l - 1] != '/') l--; if(l == 0) +#ifdef SUPER_SECURE + memcpy(own_dir, "/dev/null/", 2); +#else memcpy(own_dir, ".", 2); +#endif else { memcpy(own_dir, argv0, l - 1); own_dir[l] = 0;