Bug 227 - sudo failds to build, "undefined reference to `isblank'"
sudo failds to build, "undefined reference to `isblank'"
Status: RESOLVED FIXED
Product: Sudo
Classification: Unclassified
Component: Sudo
1.6.8
Sun Solaris 2.x
: normal normal
Assigned To: Todd C. Miller
Depends on:
Blocks:
  Show dependency treegraph
 
Reported: 2006-11-13 07:31 MST by Steve Bennett
Modified: 2007-04-24 14:52 MDT (History)
2 users (show)

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Steve Bennett 2006-11-13 07:31:20 MST
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
Comment 1 seph 2007-02-28 11:46:48 MST
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.
Comment 2 Todd C. Miller 2007-04-24 14:52:27 MDT
The configure script in cvs has been rebuilt with a newer autoconf.