Todd C. Miller [Sun, 27 Jan 2008 21:37:54 +0000 (21:37 +0000)]
Use a specific error message for errno == EAGAIN when setuid() et al fails.
On Linux systems setuid() will fail with errno set to EAGAIN if changing
to the new uid would result in a resource limit violation.
Todd C. Miller [Sun, 27 Jan 2008 21:34:41 +0000 (21:34 +0000)]
Unlimit nproc on Linux systems where calling the setuid() family
of syscalls causes the nroc resource limit to be checked. The
limits will be reset by pam_limits.so when PAM is used. In the
non-PAM case the nproc limit will remain unlimited but there doesn't
seem to be a way around that other than having sudo parse
/etc/security/limits.conf directly.
Todd C. Miller [Wed, 23 Jan 2008 11:33:27 +0000 (11:33 +0000)]
Use SUDO_DEFINE_UNQUOTED instead of AC_DEFINE_UNQUOTED to prevent
ldap.conf and ldap.secret paths from going into config.h.
Avoid single quotes in variable expansion when using SUDO_DEFINE_UNQUOTED
since in some versions of bash they will end up literally in the resulting
define.
Todd C. Miller [Fri, 18 Jan 2008 22:32:52 +0000 (22:32 +0000)]
When copying gr_mem we must guarantee that the storage space for
gr_mem is properly aligned. The simplest way to do this is to
simply store gr_mem directly after struct group. This is not a
problem for gr_passwd or gr_name as they are simple strings.
Todd C. Miller [Sat, 5 Jan 2008 12:59:05 +0000 (12:59 +0000)]
Parse uri ourself if no ldap_initialize() is present
Use ldap_create() instead of deprecated ldap_init()
Use ldap_sasl_bind_s() instead of deprecated ldap_simple_bind_s()
Todd C. Miller [Thu, 3 Jan 2008 21:11:33 +0000 (21:11 +0000)]
Add sudo_ldap_get_first_rdn() to return the first rdn of an entry's dn
using the mechanism appropriate for the LDAP SDK in use.
Use ldap_unbind_ext_s() instead of deprecated ldap_unbind_s().
Emulate ldap_unbind_ext_s() and ldap_search_ext_s() for SDK's without them.
Todd C. Miller [Tue, 1 Jan 2008 21:25:23 +0000 (21:25 +0000)]
When building up a query don't list groups in the aux group vector
that are the same as the passwd file group. On most systems the
first gid in the group vector is the same as the passwd entry gid.
Todd C. Miller [Tue, 1 Jan 2008 18:22:03 +0000 (18:22 +0000)]
Rename read_nss -> sudo_read_nss
Add --with-nsswitch to allow users to specify nsswitch.conf path or disable it.
If --with-nsswitch=no but --with-ldap, order is LDAP, then sudoers.
Fix --with-ldap-conf-file and --with-ldap-secret-file
Todd C. Miller [Mon, 31 Dec 2007 21:36:53 +0000 (21:36 +0000)]
Refactor group vector resetting into a function and also call it
from display_cmnd.
Stop after the first sucessful match in display_cmnd.
Print a newline between each display_privs method.
Todd C. Miller [Mon, 31 Dec 2007 20:04:46 +0000 (20:04 +0000)]
Refactor line reading into a separate function, sudo_parseln(),
which removes comments, leading/trailing whitespace and newlines.
May want to rethink the use of sudo_parseln() for /etc/ldap.secret
Todd C. Miller [Mon, 31 Dec 2007 19:26:52 +0000 (19:26 +0000)]
Make the inability to read the sudoers file a non-fatal error if
there are other sudoers sources available.
sudoers_file_lookup now returns "not OK" if sudoers was not present
Todd C. Miller [Fri, 21 Dec 2007 21:53:32 +0000 (21:53 +0000)]
Add support for reading and /etc/environment file. Still needs to
be documented and should probably only applies to OSes that have
it (AIX and Linux, maybe others).
Todd C. Miller [Wed, 19 Dec 2007 19:28:57 +0000 (19:28 +0000)]
Use ldapssl_init() for ldaps support instead of trying
to do it manually with ldap_init() + ldapssl_install_routines().
Use tls_cert and tls_key for cert7.db and key3.db respectively.
Don't print debugging info for options that are not set.
Add warning if start_tls specified when not supported.