|
Bugzilla – Full Text Bug Listing |
| Summary: | sudo failds to build, "undefined reference to `isblank'" | ||
|---|---|---|---|
| Product: | Sudo | Reporter: | Steve Bennett <S.Bennett> |
| Component: | Sudo | Assignee: | Todd C. Miller <Todd.Miller> |
| Status: | RESOLVED FIXED | ||
| Severity: | normal | CC: | S.Bennett, seph |
| Priority: | normal | ||
| Version: | 1.6.8 | ||
| Hardware: | Sun | ||
| OS: | Solaris 2.x | ||
I encountered this yesterday and did a fair bit of debugging.
solaris doesn't have isblank. Neither does gcc. However, the test the
sudo's configure uses is:
#include <ctype.h>
int main () { (void)isblank(1); ; return 0; }
It looks like gcc optimizes this away, so the test passes
erroneously. Autoconf 2.59 has a better test:
int main() {
extern char isblank();
char (*f)() = isblank;
return isblank != f;
}
I don't know if sudo just has an old autoconf, or a bad test, but this
seems to pretty clearly be the problem.
I fixed my build by patching configure to just never set
HAVE_ISBLANK.
The configure script in cvs has been rebuilt with a newer autoconf. |
My compile of sudo on Solaris 9 seems to fail, error is: sudo_edit.o: In function `sudo_edit': sudo_edit.c:(.text+0x23c): undefined reference to `isblank' sudo_edit.c:(.text+0x250): undefined reference to `isblank' defaults.o: In function `set_default': defaults.c:(.text+0x6e8): undefined reference to `isblank' defaults.c:(.text+0x720): undefined reference to `isblank' collect2: ld returned 1 exit status make: *** [sudo] Error 1 My C compiler is gcc 4.1.1, built on this box last week. I googled for 'sudo isblank' and found references to a couple of other people with a similar problem. I couldn't see any obvious fix. I'm happy to try stuff out to get a proper solution to this. -- Steve. Full output of configure and make is below: configure: Configuring Sudo version 1.6.8 checking whether to use PAM authentication... yes checking whether to lecture users the first time they run sudo... yes checking whether sudo should log via syslog or to a file by default... both checking which syslog facility sudo should log with... local2 checking at which syslog priority to log commands... notice checking at which syslog priority to log failures... alert checking how long a line in the log file should be... 80 checking whether sudo should ignore '.' or '' in $PATH... no checking whether to send mail when a user is not in sudoers... yes checking whether to send mail when user listed but not for this host... no checking whether to send mail when a user tries a disallowed command... no checking who should get the mail that sudo sends... root checking for bad password prompt... %u'\''s password: checking for bad password message... Sorry, try again. checking whether to expect fully qualified hosts in sudoers... no checking for umask programs should be run with... 0022 checking for default user to run commands as... root checking for editor that visudo should use... vi checking whether to obey EDITOR and VISUAL environment variables... no checking number of tries a user gets to enter their password... 3 checking time in minutes after which sudo will ask for a password again... 5 checking time in minutes after the password prompt will time out... 5 checking whether to use per-tty ticket files... no checking whether to include insults... no checking whether to override the user's path... no checking whether to get ip addresses from the network interfaces... yes checking whether stow should be used... no checking whether to do user authentication by default... yes checking whether to disable running the mailer as root... no checking whether to disable use of POSIX saved ids... no checking whether to disable shadow password support... no checking whether root should be allowed to use sudo... yes checking whether to log the hostname in the log file... no checking whether to invoke a shell if sudo is given no arguments... yes checking whether to set $HOME to target user in shell mode... no checking whether to disable 'command not found' messages... no checking for egrep... egrep checking for gcc... gcc checking for C compiler default output... a.out checking whether the C compiler works... yes checking whether we are cross compiling... no checking for suffix of executables... checking for suffix of object files... o checking whether we are using the GNU C compiler... yes checking whether gcc accepts -g... (cached) no checking for gcc option to accept ANSI C... none needed checking for library containing strerror... none required checking how to run the C preprocessor... gcc -E checking build system type... sparc-sun-solaris2.9 checking host system type... sparc-sun-solaris2.9 checking target system type... sparc-sun-solaris2.9 checking for a sed that does not truncate output... /usr/bin/sed checking for egrep... egrep checking for ld used by gcc... /usr/local/bin/ld checking if the linker (/usr/local/bin/ld) is GNU ld... yes checking for /usr/local/bin/ld option to reload object files... -r checking for BSD-compatible nm... /usr/local/bin/nm -p checking whether ln -s works... yes checking how to recognise dependent libraries... pass_all checking for ANSI C header files... yes checking for sys/types.h... yes checking for sys/stat.h... yes checking for stdlib.h... yes checking for string.h... yes checking for memory.h... yes checking for strings.h... yes checking for inttypes.h... yes checking for stdint.h... no checking for unistd.h... yes checking dlfcn.h usability... yes checking dlfcn.h presence... yes checking for dlfcn.h... yes checking for g++... no checking for c++... no checking for gpp... no checking for aCC... no checking for CC... no checking for cxx... no checking for cc++... no checking for cl... no checking for FCC... no checking for KCC... no checking for RCC... no checking for xlC_r... no checking for xlC... no checking whether we are using the GNU C++ compiler... no checking whether g++ accepts -g... no checking how to run the C++ preprocessor... /lib/cpp checking for g77... no checking for f77... no checking for xlf... no checking for frt... no checking for pgf77... no checking for fl32... no checking for af77... no checking for fort77... no checking for f90... no checking for xlf90... no checking for pgf90... no checking for epcf90... no checking for f95... no checking for fort... no checking for xlf95... no checking for lf95... no checking for g95... no checking whether we are using the GNU Fortran 77 compiler... no checking whether accepts -g... no checking the maximum length of command line arguments... 262144 checking command to parse /usr/local/bin/nm -p output from gcc object... ok checking for objdir... .libs checking for ar... ar checking for ranlib... ranlib checking for strip... strip checking if gcc static flag works... yes checking if gcc supports -fno-rtti -fno-exceptions... no checking for gcc option to produce PIC... -fPIC checking if gcc PIC flag -fPIC works... yes checking if gcc supports -c -o file.o... yes checking whether the gcc linker (/usr/local/bin/ld) supports shared libraries... yes checking whether -lc should be explicitly linked in... yes checking how to hardcode library paths into programs... immediate checking whether stripping libraries is possible... yes checking dynamic linker characteristics... solaris2.9 ld.so checking if libtool supports shared libraries... yes checking whether to build shared libraries... yes checking whether to build static libraries... no configure: creating libtool checking path to sudo_noexec.so... ${exec_prefix}/libexec/sudo_noexec.so checking for uname... uname checking for tr... tr checking for nroff... nroff checking for getspnam... yes checking whether gcc needs -traditional... no checking for an ANSI C-conforming const... yes checking for working volatile... yes checking for bison... no checking for byacc... no checking for mv... /usr/bin/mv checking for bourne shell... /bin/sh checking for sendmail... not found checking for vi... /usr/bin/vi checking for ANSI C header files... (cached) yes checking for dirent.h that defines DIR... yes checking for library containing opendir... none required checking malloc.h usability... yes checking malloc.h presence... yes checking for malloc.h... yes checking paths.h usability... no checking paths.h presence... no checking for paths.h... no checking utime.h usability... yes checking utime.h presence... yes checking for utime.h... yes checking netgroup.h usability... no checking netgroup.h presence... no checking for netgroup.h... no checking sys/sockio.h usability... yes checking sys/sockio.h presence... yes checking for sys/sockio.h... yes checking sys/bsdtypes.h usability... no checking sys/bsdtypes.h presence... no checking for sys/bsdtypes.h... no checking sys/select.h usability... yes checking sys/select.h presence... yes checking for sys/select.h... yes checking err.h usability... no checking err.h presence... no checking for err.h... no checking POSIX termios... yes checking for mode_t... yes checking for uid_t in sys/types.h... yes checking for sig_atomic_t... yes checking for sigaction_t... no checking for struct timespec... yes checking for size_t... yes checking for ssize_t... yes checking for dev_t... yes checking for ino_t... yes checking for full void implementation... yes checking max length of uid_t... 10 checking for long long support... yes checking for sa_len field in struct sockaddr... no checking return type of signal handlers... void checking for strchr... yes checking for strrchr... yes checking for memchr... yes checking for memcpy... yes checking for memset... yes checking for sysconf... yes checking for tzset... yes checking for strftime... yes checking for setrlimit... yes checking for initgroups... yes checking for fstat... yes checking for gettimeofday... yes checking for seteuid... yes checking for setresuid... no checking for setreuid... yes checking for getifaddrs... no checking for getcwd... yes checking for lockf... yes checking for waitpid... yes checking for innetgr... yes checking for getdomainname... no checking for lsearch... yes checking for utimes... yes checking for futimes... no checking for futimesat... yes checking for working fnmatch with FNM_CASEFOLD... no checking for isblank... yes checking for strerror... yes checking for strcasecmp... yes checking for sigaction... yes checking for strlcpy... yes checking for strlcat... yes checking for closefrom... yes checking for snprintf... yes checking for vsnprintf... yes checking for asprintf... no checking for vasprintf... no checking for struct stat.st_mtim... yes checking for two-parameter timespecsub... no checking for socket... no checking for socket in -lsocket... yes checking for inet_addr... yes checking for syslog... yes checking for getprogname... no checking for __progname... no checking for main in -ldl... yes checking pam/pam_appl.h usability... no checking pam/pam_appl.h presence... no checking for pam/pam_appl.h... no checking for log file location... /var/log/sudo.log checking for timestamp file location... /var/run/sudo configure: creating ./config.status config.status: creating Makefile config.status: creating sudo.man config.status: creating visudo.man config.status: creating sudoers.man config.status: creating config.h config.status: creating pathnames.h bash-2.05$ make gcc -c -I. -I. -D__EXTENSIONS__ -O2 -D_PATH_SUDOERS=\"/etc/sudoers\" -D_PATH_SUDOERS_TMP=\"/etc/sudoers.tmp\" -DSUDOERS_UID=0 -DSUDOERS_GID=0 -DSUDOERS_MODE=0440 check.c gcc -c -I. -I. -D__EXTENSIONS__ -O2 -D_PATH_SUDOERS=\"/etc/sudoers\" -D_PATH_SUDOERS_TMP=\"/etc/sudoers.tmp\" -DSUDOERS_UID=0 -DSUDOERS_GID=0 -DSUDOERS_MODE=0440 env.c gcc -c -I. -I. -D__EXTENSIONS__ -O2 -D_PATH_SUDOERS=\"/etc/sudoers\" -D_PATH_SUDOERS_TMP=\"/etc/sudoers.tmp\" -DSUDOERS_UID=0 -DSUDOERS_GID=0 -DSUDOERS_MODE=0440 getspwuid.c gcc -c -I. -I. -D__EXTENSIONS__ -O2 -D_PATH_SUDOERS=\"/etc/sudoers\" -D_PATH_SUDOERS_TMP=\"/etc/sudoers.tmp\" -DSUDOERS_UID=0 -DSUDOERS_GID=0 -DSUDOERS_MODE=0440 gettime.c gcc -c -I. -I. -D__EXTENSIONS__ -O2 -D_PATH_SUDOERS=\"/etc/sudoers\" -D_PATH_SUDOERS_TMP=\"/etc/sudoers.tmp\" -DSUDOERS_UID=0 -DSUDOERS_GID=0 -DSUDOERS_MODE=0440 goodpath.c gcc -c -I. -I. -D__EXTENSIONS__ -O2 -D_PATH_SUDOERS=\"/etc/sudoers\" -D_PATH_SUDOERS_TMP=\"/etc/sudoers.tmp\" -DSUDOERS_UID=0 -DSUDOERS_GID=0 -DSUDOERS_MODE=0440 fileops.c gcc -c -I. -I. -D__EXTENSIONS__ -O2 -D_PATH_SUDOERS=\"/etc/sudoers\" -D_PATH_SUDOERS_TMP=\"/etc/sudoers.tmp\" -DSUDOERS_UID=0 -DSUDOERS_GID=0 -DSUDOERS_MODE=0440 find_path.c gcc -c -I. -I. -D__EXTENSIONS__ -O2 -D_PATH_SUDOERS=\"/etc/sudoers\" -D_PATH_SUDOERS_TMP=\"/etc/sudoers.tmp\" -DSUDOERS_UID=0 -DSUDOERS_GID=0 -DSUDOERS_MODE=0440 interfaces.c gcc -c -I. -I. -D__EXTENSIONS__ -O2 -D_PATH_SUDOERS=\"/etc/sudoers\" -D_PATH_SUDOERS_TMP=\"/etc/sudoers.tmp\" -DSUDOERS_UID=0 -DSUDOERS_GID=0 -DSUDOERS_MODE=0440 logging.c gcc -c -I. -I. -D__EXTENSIONS__ -O2 -D_PATH_SUDOERS=\"/etc/sudoers\" -D_PATH_SUDOERS_TMP=\"/etc/sudoers.tmp\" -DSUDOERS_UID=0 -DSUDOERS_GID=0 -DSUDOERS_MODE=0440 parse.c gcc -c -I. -I. -D__EXTENSIONS__ -O2 -D_PATH_SUDOERS=\"/etc/sudoers\" -D_PATH_SUDOERS_TMP=\"/etc/sudoers.tmp\" -DSUDOERS_UID=0 -DSUDOERS_GID=0 -DSUDOERS_MODE=0440 set_perms.c gcc -c -I. -I. -D__EXTENSIONS__ -O2 -D_PATH_SUDOERS=\"/etc/sudoers\" -D_PATH_SUDOERS_TMP=\"/etc/sudoers.tmp\" -DSUDOERS_UID=0 -DSUDOERS_GID=0 -DSUDOERS_MODE=0440 sudo.c gcc -c -I. -I. -D__EXTENSIONS__ -O2 -D_PATH_SUDOERS=\"/etc/sudoers\" -D_PATH_SUDOERS_TMP=\"/etc/sudoers.tmp\" -DSUDOERS_UID=0 -DSUDOERS_GID=0 -DSUDOERS_MODE=0440 sudo_edit.c gcc -c -I. -I. -D__EXTENSIONS__ -O2 -D_PATH_SUDOERS=\"/etc/sudoers\" -D_PATH_SUDOERS_TMP=\"/etc/sudoers.tmp\" -DSUDOERS_UID=0 -DSUDOERS_GID=0 -DSUDOERS_MODE=0440 tgetpass.c gcc -c -I. -I. -D__EXTENSIONS__ -O2 -D_PATH_SUDOERS=\"/etc/sudoers\" -D_PATH_SUDOERS_TMP=\"/etc/sudoers.tmp\" -DSUDOERS_UID=0 -DSUDOERS_GID=0 -DSUDOERS_MODE=0440 zero_bytes.c gcc -c -I. -I. -D__EXTENSIONS__ -O2 -D_PATH_SUDOERS=\"/etc/sudoers\" -D_PATH_SUDOERS_TMP=\"/etc/sudoers.tmp\" -DSUDOERS_UID=0 -DSUDOERS_GID=0 -DSUDOERS_MODE=0440 ./auth/sudo_auth.c gcc -c -I. -I. -D__EXTENSIONS__ -O2 -D_PATH_SUDOERS=\"/etc/sudoers\" -D_PATH_SUDOERS_TMP=\"/etc/sudoers.tmp\" -DSUDOERS_UID=0 -DSUDOERS_GID=0 -DSUDOERS_MODE=0440 ./auth/pam.c gcc -c -I. -I. -D__EXTENSIONS__ -O2 -D_PATH_SUDOERS=\"/etc/sudoers\" -D_PATH_SUDOERS_TMP=\"/etc/sudoers.tmp\" -DSUDOERS_UID=0 -DSUDOERS_GID=0 -DSUDOERS_MODE=0440 sudo.tab.c gcc -c -I. -I. -D__EXTENSIONS__ -O2 -D_PATH_SUDOERS=\"/etc/sudoers\" -D_PATH_SUDOERS_TMP=\"/etc/sudoers.tmp\" -DSUDOERS_UID=0 -DSUDOERS_GID=0 -DSUDOERS_MODE=0440 lex.yy.c gcc -c -I. -I. -D__EXTENSIONS__ -O2 -D_PATH_SUDOERS=\"/etc/sudoers\" -D_PATH_SUDOERS_TMP=\"/etc/sudoers.tmp\" -DSUDOERS_UID=0 -DSUDOERS_GID=0 -DSUDOERS_MODE=0440 alloc.c gcc -c -I. -I. -D__EXTENSIONS__ -O2 -D_PATH_SUDOERS=\"/etc/sudoers\" -D_PATH_SUDOERS_TMP=\"/etc/sudoers.tmp\" -DSUDOERS_UID=0 -DSUDOERS_GID=0 -DSUDOERS_MODE=0440 defaults.c gcc -c -I. -I. -D__EXTENSIONS__ -O2 -D_PATH_SUDOERS=\"/etc/sudoers\" -D_PATH_SUDOERS_TMP=\"/etc/sudoers.tmp\" -DSUDOERS_UID=0 -DSUDOERS_GID=0 -DSUDOERS_MODE=0440 err.c gcc -c -I. -I. -D__EXTENSIONS__ -O2 -D_PATH_SUDOERS=\"/etc/sudoers\" -D_PATH_SUDOERS_TMP=\"/etc/sudoers.tmp\" -DSUDOERS_UID=0 -DSUDOERS_GID=0 -DSUDOERS_MODE=0440 fnmatch.c gcc -c -I. -I. -D__EXTENSIONS__ -O2 -D_PATH_SUDOERS=\"/etc/sudoers\" -D_PATH_SUDOERS_TMP=\"/etc/sudoers.tmp\" -DSUDOERS_UID=0 -DSUDOERS_GID=0 -DSUDOERS_MODE=0440 snprintf.c gcc -c -I. -I. -D__EXTENSIONS__ -O2 -D_PATH_SUDOERS=\"/etc/sudoers\" -D_PATH_SUDOERS_TMP=\"/etc/sudoers.tmp\" -DSUDOERS_UID=0 -DSUDOERS_GID=0 -DSUDOERS_MODE=0440 getprogname.c gcc -o sudo check.o env.o getspwuid.o gettime.o goodpath.o fileops.o find_path.o interfaces.o logging.o parse.o set_perms.o sudo.o sudo_edit.o tgetpass.o zero_bytes.o sudo_auth.o pam.o sudo.tab.o lex.yy.o alloc.o defaults.o err.o fnmatch.o snprintf.o getprogname.o -lpam -ldl -lsocket sudo_edit.o: In function `sudo_edit': sudo_edit.c:(.text+0x23c): undefined reference to `isblank' sudo_edit.c:(.text+0x250): undefined reference to `isblank' defaults.o: In function `set_default': defaults.c:(.text+0x6e8): undefined reference to `isblank' defaults.c:(.text+0x720): undefined reference to `isblank' collect2: ld returned 1 exit status make: *** [sudo] Error 1 configure: Configuring Sudo version 1.6.8 checking whether to use PAM authentication... yes checking whether to lecture users the first time they run sudo... yes checking whether sudo should log via syslog or to a file by default... both checking which syslog facility sudo should log with... local2 checking at which syslog priority to log commands... notice checking at which syslog priority to log failures... alert checking how long a line in the log file should be... 80 checking whether sudo should ignore '.' or '' in $PATH... no checking whether to send mail when a user is not in sudoers... yes checking whether to send mail when user listed but not for this host... no checking whether to send mail when a user tries a disallowed command... no checking who should get the mail that sudo sends... root checking for bad password prompt... %u'\''s password: checking for bad password message... Sorry, try again. checking whether to expect fully qualified hosts in sudoers... no checking for umask programs should be run with... 0022 checking for default user to run commands as... root checking for editor that visudo should use... vi checking whether to obey EDITOR and VISUAL environment variables... no checking number of tries a user gets to enter their password... 3 checking time in minutes after which sudo will ask for a password again... 5 checking time in minutes after the password prompt will time out... 5 checking whether to use per-tty ticket files... no checking whether to include insults... no checking whether to override the user's path... no checking whether to get ip addresses from the network interfaces... yes checking whether stow should be used... no checking whether to do user authentication by default... yes checking whether to disable running the mailer as root... no checking whether to disable use of POSIX saved ids... no checking whether to disable shadow password support... no checking whether root should be allowed to use sudo... yes checking whether to log the hostname in the log file... no checking whether to invoke a shell if sudo is given no arguments... yes checking whether to set $HOME to target user in shell mode... no checking whether to disable 'command not found' messages... no checking for egrep... egrep checking for gcc... gcc checking for C compiler default output... a.out checking whether the C compiler works... yes checking whether we are cross compiling... no checking for suffix of executables... checking for suffix of object files... o checking whether we are using the GNU C compiler... yes checking whether gcc accepts -g... (cached) no checking for gcc option to accept ANSI C... none needed checking for library containing strerror... none required checking how to run the C preprocessor... gcc -E checking build system type... sparc-sun-solaris2.9 checking host system type... sparc-sun-solaris2.9 checking target system type... sparc-sun-solaris2.9 checking for a sed that does not truncate output... /usr/bin/sed checking for egrep... egrep checking for ld used by gcc... /usr/local/bin/ld checking if the linker (/usr/local/bin/ld) is GNU ld... yes checking for /usr/local/bin/ld option to reload object files... -r checking for BSD-compatible nm... /usr/local/bin/nm -p checking whether ln -s works... yes checking how to recognise dependent libraries... pass_all checking for ANSI C header files... yes checking for sys/types.h... yes checking for sys/stat.h... yes checking for stdlib.h... yes checking for string.h... yes checking for memory.h... yes checking for strings.h... yes checking for inttypes.h... yes checking for stdint.h... no checking for unistd.h... yes checking dlfcn.h usability... yes checking dlfcn.h presence... yes checking for dlfcn.h... yes checking for g++... no checking for c++... no checking for gpp... no checking for aCC... no checking for CC... no checking for cxx... no checking for cc++... no checking for cl... no checking for FCC... no checking for KCC... no checking for RCC... no checking for xlC_r... no checking for xlC... no checking whether we are using the GNU C++ compiler... no checking whether g++ accepts -g... no checking how to run the C++ preprocessor... /lib/cpp checking for g77... no checking for f77... no checking for xlf... no checking for frt... no checking for pgf77... no checking for fl32... no checking for af77... no checking for fort77... no checking for f90... no checking for xlf90... no checking for pgf90... no checking for epcf90... no checking for f95... no checking for fort... no checking for xlf95... no checking for lf95... no checking for g95... no checking whether we are using the GNU Fortran 77 compiler... no checking whether accepts -g... no checking the maximum length of command line arguments... 262144 checking command to parse /usr/local/bin/nm -p output from gcc object... ok checking for objdir... .libs checking for ar... ar checking for ranlib... ranlib checking for strip... strip checking if gcc static flag works... yes checking if gcc supports -fno-rtti -fno-exceptions... no checking for gcc option to produce PIC... -fPIC checking if gcc PIC flag -fPIC works... yes checking if gcc supports -c -o file.o... yes checking whether the gcc linker (/usr/local/bin/ld) supports shared libraries... yes checking whether -lc should be explicitly linked in... yes checking how to hardcode library paths into programs... immediate checking whether stripping libraries is possible... yes checking dynamic linker characteristics... solaris2.9 ld.so checking if libtool supports shared libraries... yes checking whether to build shared libraries... yes checking whether to build static libraries... no configure: creating libtool checking path to sudo_noexec.so... ${exec_prefix}/libexec/sudo_noexec.so checking for uname... uname checking for tr... tr checking for nroff... nroff checking for getspnam... yes checking whether gcc needs -traditional... no checking for an ANSI C-conforming const... yes checking for working volatile... yes checking for bison... no checking for byacc... no checking for mv... /usr/bin/mv checking for bourne shell... /bin/sh checking for sendmail... not found checking for vi... /usr/bin/vi checking for ANSI C header files... (cached) yes checking for dirent.h that defines DIR... yes checking for library containing opendir... none required checking malloc.h usability... yes checking malloc.h presence... yes checking for malloc.h... yes checking paths.h usability... no checking paths.h presence... no checking for paths.h... no checking utime.h usability... yes checking utime.h presence... yes checking for utime.h... yes checking netgroup.h usability... no checking netgroup.h presence... no checking for netgroup.h... no checking sys/sockio.h usability... yes checking sys/sockio.h presence... yes checking for sys/sockio.h... yes checking sys/bsdtypes.h usability... no checking sys/bsdtypes.h presence... no checking for sys/bsdtypes.h... no checking sys/select.h usability... yes checking sys/select.h presence... yes checking for sys/select.h... yes checking err.h usability... no checking err.h presence... no checking for err.h... no checking POSIX termios... yes checking for mode_t... yes checking for uid_t in sys/types.h... yes checking for sig_atomic_t... yes checking for sigaction_t... no checking for struct timespec... yes checking for size_t... yes checking for ssize_t... yes checking for dev_t... yes checking for ino_t... yes checking for full void implementation... yes checking max length of uid_t... 10 checking for long long support... yes checking for sa_len field in struct sockaddr... no checking return type of signal handlers... void checking for strchr... yes checking for strrchr... yes checking for memchr... yes checking for memcpy... yes checking for memset... yes checking for sysconf... yes checking for tzset... yes checking for strftime... yes checking for setrlimit... yes checking for initgroups... yes checking for fstat... yes checking for gettimeofday... yes checking for seteuid... yes checking for setresuid... no checking for setreuid... yes checking for getifaddrs... no checking for getcwd... yes checking for lockf... yes checking for waitpid... yes checking for innetgr... yes checking for getdomainname... no checking for lsearch... yes checking for utimes... yes checking for futimes... no checking for futimesat... yes checking for working fnmatch with FNM_CASEFOLD... no checking for isblank... yes checking for strerror... yes checking for strcasecmp... yes checking for sigaction... yes checking for strlcpy... yes checking for strlcat... yes checking for closefrom... yes checking for snprintf... yes checking for vsnprintf... yes checking for asprintf... no checking for vasprintf... no checking for struct stat.st_mtim... yes checking for two-parameter timespecsub... no checking for socket... no checking for socket in -lsocket... yes checking for inet_addr... yes checking for syslog... yes checking for getprogname... no checking for __progname... no checking for main in -ldl... yes checking pam/pam_appl.h usability... no checking pam/pam_appl.h presence... no checking for pam/pam_appl.h... no checking for log file location... /var/log/sudo.log checking for timestamp file location... /var/run/sudo configure: creating ./config.status config.status: creating Makefile config.status: creating sudo.man config.status: creating visudo.man config.status: creating sudoers.man config.status: creating config.h config.status: creating pathnames.h bash-2.05$ make gcc -c -I. -I. -D__EXTENSIONS__ -O2 -D_PATH_SUDOERS=\"/etc/sudoers\" -D_PATH_SUDOERS_TMP=\"/etc/sudoers.tmp\" -DSUDOERS_UID=0 -DSUDOERS_GID=0 -DSUDOERS_MODE=0440 check.c gcc -c -I. -I. -D__EXTENSIONS__ -O2 -D_PATH_SUDOERS=\"/etc/sudoers\" -D_PATH_SUDOERS_TMP=\"/etc/sudoers.tmp\" -DSUDOERS_UID=0 -DSUDOERS_GID=0 -DSUDOERS_MODE=0440 env.c gcc -c -I. -I. -D__EXTENSIONS__ -O2 -D_PATH_SUDOERS=\"/etc/sudoers\" -D_PATH_SUDOERS_TMP=\"/etc/sudoers.tmp\" -DSUDOERS_UID=0 -DSUDOERS_GID=0 -DSUDOERS_MODE=0440 getspwuid.c gcc -c -I. -I. -D__EXTENSIONS__ -O2 -D_PATH_SUDOERS=\"/etc/sudoers\" -D_PATH_SUDOERS_TMP=\"/etc/sudoers.tmp\" -DSUDOERS_UID=0 -DSUDOERS_GID=0 -DSUDOERS_MODE=0440 gettime.c gcc -c -I. -I. -D__EXTENSIONS__ -O2 -D_PATH_SUDOERS=\"/etc/sudoers\" -D_PATH_SUDOERS_TMP=\"/etc/sudoers.tmp\" -DSUDOERS_UID=0 -DSUDOERS_GID=0 -DSUDOERS_MODE=0440 goodpath.c gcc -c -I. -I. -D__EXTENSIONS__ -O2 -D_PATH_SUDOERS=\"/etc/sudoers\" -D_PATH_SUDOERS_TMP=\"/etc/sudoers.tmp\" -DSUDOERS_UID=0 -DSUDOERS_GID=0 -DSUDOERS_MODE=0440 fileops.c gcc -c -I. -I. -D__EXTENSIONS__ -O2 -D_PATH_SUDOERS=\"/etc/sudoers\" -D_PATH_SUDOERS_TMP=\"/etc/sudoers.tmp\" -DSUDOERS_UID=0 -DSUDOERS_GID=0 -DSUDOERS_MODE=0440 find_path.c gcc -c -I. -I. -D__EXTENSIONS__ -O2 -D_PATH_SUDOERS=\"/etc/sudoers\" -D_PATH_SUDOERS_TMP=\"/etc/sudoers.tmp\" -DSUDOERS_UID=0 -DSUDOERS_GID=0 -DSUDOERS_MODE=0440 interfaces.c gcc -c -I. -I. -D__EXTENSIONS__ -O2 -D_PATH_SUDOERS=\"/etc/sudoers\" -D_PATH_SUDOERS_TMP=\"/etc/sudoers.tmp\" -DSUDOERS_UID=0 -DSUDOERS_GID=0 -DSUDOERS_MODE=0440 logging.c gcc -c -I. -I. -D__EXTENSIONS__ -O2 -D_PATH_SUDOERS=\"/etc/sudoers\" -D_PATH_SUDOERS_TMP=\"/etc/sudoers.tmp\" -DSUDOERS_UID=0 -DSUDOERS_GID=0 -DSUDOERS_MODE=0440 parse.c gcc -c -I. -I. -D__EXTENSIONS__ -O2 -D_PATH_SUDOERS=\"/etc/sudoers\" -D_PATH_SUDOERS_TMP=\"/etc/sudoers.tmp\" -DSUDOERS_UID=0 -DSUDOERS_GID=0 -DSUDOERS_MODE=0440 set_perms.c gcc -c -I. -I. -D__EXTENSIONS__ -O2 -D_PATH_SUDOERS=\"/etc/sudoers\" -D_PATH_SUDOERS_TMP=\"/etc/sudoers.tmp\" -DSUDOERS_UID=0 -DSUDOERS_GID=0 -DSUDOERS_MODE=0440 sudo.c gcc -c -I. -I. -D__EXTENSIONS__ -O2 -D_PATH_SUDOERS=\"/etc/sudoers\" -D_PATH_SUDOERS_TMP=\"/etc/sudoers.tmp\" -DSUDOERS_UID=0 -DSUDOERS_GID=0 -DSUDOERS_MODE=0440 sudo_edit.c gcc -c -I. -I. -D__EXTENSIONS__ -O2 -D_PATH_SUDOERS=\"/etc/sudoers\" -D_PATH_SUDOERS_TMP=\"/etc/sudoers.tmp\" -DSUDOERS_UID=0 -DSUDOERS_GID=0 -DSUDOERS_MODE=0440 tgetpass.c gcc -c -I. -I. -D__EXTENSIONS__ -O2 -D_PATH_SUDOERS=\"/etc/sudoers\" -D_PATH_SUDOERS_TMP=\"/etc/sudoers.tmp\" -DSUDOERS_UID=0 -DSUDOERS_GID=0 -DSUDOERS_MODE=0440 zero_bytes.c gcc -c -I. -I. -D__EXTENSIONS__ -O2 -D_PATH_SUDOERS=\"/etc/sudoers\" -D_PATH_SUDOERS_TMP=\"/etc/sudoers.tmp\" -DSUDOERS_UID=0 -DSUDOERS_GID=0 -DSUDOERS_MODE=0440 ./auth/sudo_auth.c gcc -c -I. -I. -D__EXTENSIONS__ -O2 -D_PATH_SUDOERS=\"/etc/sudoers\" -D_PATH_SUDOERS_TMP=\"/etc/sudoers.tmp\" -DSUDOERS_UID=0 -DSUDOERS_GID=0 -DSUDOERS_MODE=0440 ./auth/pam.c gcc -c -I. -I. -D__EXTENSIONS__ -O2 -D_PATH_SUDOERS=\"/etc/sudoers\" -D_PATH_SUDOERS_TMP=\"/etc/sudoers.tmp\" -DSUDOERS_UID=0 -DSUDOERS_GID=0 -DSUDOERS_MODE=0440 sudo.tab.c gcc -c -I. -I. -D__EXTENSIONS__ -O2 -D_PATH_SUDOERS=\"/etc/sudoers\" -D_PATH_SUDOERS_TMP=\"/etc/sudoers.tmp\" -DSUDOERS_UID=0 -DSUDOERS_GID=0 -DSUDOERS_MODE=0440 lex.yy.c gcc -c -I. -I. -D__EXTENSIONS__ -O2 -D_PATH_SUDOERS=\"/etc/sudoers\" -D_PATH_SUDOERS_TMP=\"/etc/sudoers.tmp\" -DSUDOERS_UID=0 -DSUDOERS_GID=0 -DSUDOERS_MODE=0440 alloc.c gcc -c -I. -I. -D__EXTENSIONS__ -O2 -D_PATH_SUDOERS=\"/etc/sudoers\" -D_PATH_SUDOERS_TMP=\"/etc/sudoers.tmp\" -DSUDOERS_UID=0 -DSUDOERS_GID=0 -DSUDOERS_MODE=0440 defaults.c gcc -c -I. -I. -D__EXTENSIONS__ -O2 -D_PATH_SUDOERS=\"/etc/sudoers\" -D_PATH_SUDOERS_TMP=\"/etc/sudoers.tmp\" -DSUDOERS_UID=0 -DSUDOERS_GID=0 -DSUDOERS_MODE=0440 err.c gcc -c -I. -I. -D__EXTENSIONS__ -O2 -D_PATH_SUDOERS=\"/etc/sudoers\" -D_PATH_SUDOERS_TMP=\"/etc/sudoers.tmp\" -DSUDOERS_UID=0 -DSUDOERS_GID=0 -DSUDOERS_MODE=0440 fnmatch.c gcc -c -I. -I. -D__EXTENSIONS__ -O2 -D_PATH_SUDOERS=\"/etc/sudoers\" -D_PATH_SUDOERS_TMP=\"/etc/sudoers.tmp\" -DSUDOERS_UID=0 -DSUDOERS_GID=0 -DSUDOERS_MODE=0440 snprintf.c gcc -c -I. -I. -D__EXTENSIONS__ -O2 -D_PATH_SUDOERS=\"/etc/sudoers\" -D_PATH_SUDOERS_TMP=\"/etc/sudoers.tmp\" -DSUDOERS_UID=0 -DSUDOERS_GID=0 -DSUDOERS_MODE=0440 getprogname.c gcc -o sudo check.o env.o getspwuid.o gettime.o goodpath.o fileops.o find_path.o interfaces.o logging.o parse.o set_perms.o sudo.o sudo_edit.o tgetpass.o zero_bytes.o sudo_auth.o pam.o sudo.tab.o lex.yy.o alloc.o defaults.o err.o fnmatch.o snprintf.o getprogname.o -lpam -ldl -lsocket sudo_edit.o: In function `sudo_edit': sudo_edit.c:(.text+0x23c): undefined reference to `isblank' sudo_edit.c:(.text+0x250): undefined reference to `isblank' defaults.o: In function `set_default': defaults.c:(.text+0x6e8): undefined reference to `isblank' defaults.c:(.text+0x720): undefined reference to `isblank' collect2: ld returned 1 exit status make: *** [sudo] Error 1