[sudo-workers] [PATCH] Fix the undefined sudo_debug_exit_ssize_t_v1 symbol error in sudoers plugin (versions > 1.8.15)

Guido Trentalancia guido at trentalancia.net
Fri Jul 8 09:49:45 MDT 2016


Yes, you're right, the reason is a mismatched libsudo_util.so !

Basically the symbolic link /usr/libexec/sudo/libsudo_util.so.0 (not
/usr/libexec/sudo/libsudo_util.so) points to the old version of
libsudo_util.so (the one with a trailing tilde).

Apparently ldconfig (called by libtool) creates the wrong symbolic
link...

So, at the moment, I can only think about the following new version of
the patch:

In versions greater than 1.8.15, the shared object sudoers.so (plugin)
should link sudo_debug.c in order to avoid the following missing symbol
error on calls to debug_return_ssize_t()->sudo_debug_exit_ssize_t():

sudo: symbol lookup error: /usr/libexec/sudo/sudoers.so: undefined symbol: sudo_debug_exit_ssize_t_v1

This is the second version of the patch.

Signed-off-by: Guido Trentalancia <guido at trentalancia.net>
---
 Makefile.in          |    2 +-
 configure.ac         |    1 +
 lib/util/Makefile.in |   11 +++++++++++
 3 files changed, 13 insertions(+), 1 deletion(-)

--- sudo-1.8.17p1-orig/configure.ac	2016-07-08 17:39:47.925457605 +0200
+++ sudo-1.8.17p1/configure.ac	2016-07-08 16:04:32.179476385 +0200
@@ -2229,6 +2229,7 @@ dnl
 dnl Program checks
 dnl
 AC_PROG_AWK
+AC_PROG_LN_S
 AC_PROG_YACC
 AC_PATH_PROG([FLEX], [flex], [flex])
 SUDO_PROG_MV
--- sudo-1.8.17p1-orig/Makefile.in	2016-03-17 17:13:10.000000000 +0100
+++ sudo-1.8.17p1/Makefile.in	2016-07-08 17:37:02.943920356 +0200
@@ -130,7 +130,7 @@ install-doc: config.status ChangeLog
 	done
 
 install: config.status ChangeLog pre-install install-nls
-	for d in $(SUBDIRS); do \
+	for d in "$(SUBDIRS) lib/util"; do \
 	    (cd $$d && exec $(MAKE) "INSTALL_OWNER=$(INSTALL_OWNER)" $@) && continue; \
 	    exit $$?; \
 	done
--- sudo-1.8.17p1-orig/lib/util/Makefile.in	2016-06-18 04:44:21.000000000 +0200
+++ sudo-1.8.17p1/lib/util/Makefile.in	2016-07-08 17:12:34.462302364 +0200
@@ -48,6 +48,7 @@ CC = @CC@
 LIBTOOL = @LIBTOOL@
 SED = @SED@
 AWK = @AWK@
+LN_S = @LN_S@
 
 # Our install program supports extra flags...
 INSTALL = $(SHELL) $(top_srcdir)/install-sh -c
@@ -80,6 +81,12 @@ SSP_LDFLAGS = @SSP_LDFLAGS@
 # Libtool style shared library version
 SHLIB_VERSION = 0:0:0
 
+# Shared library version (standard format)
+SHLIB_VERSION_MAJOR=$(shell $(AWK) -F: '{ print $$1 }' <<< $(SHLIB_VERSION))
+SHLIB_VERSION_MINOR=$(shell $(AWK) -F: '{ print $$2 }' <<< $(SHLIB_VERSION))
+SHLIB_VERSION_PATCH=$(shell $(AWK) -F: '{ print $$3 }' <<< $(SHLIB_VERSION))
+SHLIB_VERSION_STANDARD=$(SHLIB_VERSION_MAJOR).$(SHLIB_VERSION_MINOR).$(SHLIB_VERSION_PATCH)
+
 # cppcheck options, usually set in the top-level Makefile
 CPPCHECK_OPTS = -q --force --enable=warning,performance,portability --suppress=constStatement --error-exitcode=1 --inline-suppr -Dva_copy=va_copy -U__cplusplus -UQUAD_MAX -UQUAD_MIN -UUQUAD_MAX -U_POSIX_HOST_NAME_MAX -U_POSIX_PATH_MAX -U__NBBY -DNSIG=64
 
@@ -212,6 +219,10 @@ install: install-dirs
 	*-no-install*) ;; \
 	*)  if [ X"$(shlib_enable)" = X"yes" ]; then \
 		INSTALL_BACKUP='~' $(LIBTOOL) $(LTFLAGS) --quiet --mode=install $(INSTALL) $(INSTALL_OWNER) libsudo_util.la $(DESTDIR)$(libexecdir)/sudo; \
+		rm -f $(DESTDIR)$(libexecdir)/sudo/libsudo_util.so; \
+		$(LN_S) libsudo_util.so.$(SHLIB_VERSION_STANDARD) $(DESTDIR)$(libexecdir)/sudo/libsudo_util.so; \
+		rm -f $(DESTDIR)$(libexecdir)/sudo/libsudo_util.so.$(SHLIB_VERSION_MAJOR); \
+		$(LN_S) libsudo_util.so.$(SHLIB_VERSION_STANDARD) $(DESTDIR)$(libexecdir)/sudo/libsudo_util.so.$(SHLIB_VERSION_MAJOR); \
 	    fi;; \
 	esac
 


More information about the sudo-workers mailing list