Diff for /embedaddon/sudo/plugins/sudoers/defaults.c between versions 1.1.1.2 and 1.1.1.5

version 1.1.1.2, 2012/05/29 12:26:49 version 1.1.1.5, 2013/10/14 07:56:34
Line 1 Line 1
 /*  /*
 * Copyright (c) 1999-2005, 2007-2011 * Copyright (c) 1999-2005, 2007-2013
  *      Todd C. Miller <Todd.Miller@courtesan.com>   *      Todd C. Miller <Todd.Miller@courtesan.com>
  *   *
  * Permission to use, copy, modify, and distribute this software for any   * Permission to use, copy, modify, and distribute this software for any
Line 22 Line 22
 #include <config.h>  #include <config.h>
   
 #include <sys/types.h>  #include <sys/types.h>
 #include <sys/param.h>  
 #include <stdio.h>  #include <stdio.h>
 #ifdef STDC_HEADERS  #ifdef STDC_HEADERS
 # include <stdlib.h>  # include <stdlib.h>
Line 357  init_defaults(void) Line 356  init_defaults(void)
                     list_op(NULL, 0, def, freeall);                      list_op(NULL, 0, def, freeall);
                     break;                      break;
             }              }
            zero_bytes(&def->sd_un, sizeof(def->sd_un));            memset(&def->sd_un, 0, sizeof(def->sd_un));
         }          }
     }      }
   
Line 422  init_defaults(void) Line 421  init_defaults(void)
     def_env_reset = ENV_RESET;      def_env_reset = ENV_RESET;
     def_set_logname = true;      def_set_logname = true;
     def_closefrom = STDERR_FILENO + 1;      def_closefrom = STDERR_FILENO + 1;
       def_pam_service = estrdup("sudo");
   #ifdef HAVE_PAM_LOGIN
       def_pam_login_service = estrdup("sudo-i");
   #else
       def_pam_login_service = estrdup("sudo");
   #endif
   #ifdef NO_PAM_SESSION
       def_pam_session = false;
   #else
       def_pam_session = true;
   #endif
   
     /* Syslog options need special care since they both strings and ints */      /* Syslog options need special care since they both strings and ints */
 #if (LOGGING & SLOG_SYSLOG)  #if (LOGGING & SLOG_SYSLOG)
Line 452  init_defaults(void) Line 462  init_defaults(void)
   
     /* Now do the strings */      /* Now do the strings */
     def_mailto = estrdup(MAILTO);      def_mailto = estrdup(MAILTO);
    def_mailsub = estrdup(_(MAILSUBJECT));    def_mailsub = estrdup(N_(MAILSUBJECT));
     def_badpass_message = estrdup(_(INCORRECT_PASSWORD));      def_badpass_message = estrdup(_(INCORRECT_PASSWORD));
     def_timestampdir = estrdup(_PATH_SUDO_TIMEDIR);      def_timestampdir = estrdup(_PATH_SUDO_TIMEDIR);
     def_passprompt = estrdup(_(PASSPROMPT));      def_passprompt = estrdup(_(PASSPROMPT));
Line 485  init_defaults(void) Line 495  init_defaults(void)
  * Update the defaults based on what was set by sudoers.   * Update the defaults based on what was set by sudoers.
  * Pass in an OR'd list of which default types to update.   * Pass in an OR'd list of which default types to update.
  */   */
intbool
 update_defaults(int what)  update_defaults(int what)
 {  {
     struct defaults *def;      struct defaults *def;
Line 500  update_defaults(int what) Line 510  update_defaults(int what)
                     rc = false;                      rc = false;
                 break;                  break;
             case DEFAULTS_USER:              case DEFAULTS_USER:
   #if 1
                   if (ISSET(what, SETDEF_USER)) {
                       int m;
                       m = userlist_matches(sudo_user.pw, &def->binding);
                       if (m == ALLOW) {
                           if (!set_default(def->var, def->val, def->op))
                               rc = false;
                       }
                   }
   #else
                 if (ISSET(what, SETDEF_USER) &&                  if (ISSET(what, SETDEF_USER) &&
                     userlist_matches(sudo_user.pw, &def->binding) == ALLOW &&                      userlist_matches(sudo_user.pw, &def->binding) == ALLOW &&
                     !set_default(def->var, def->val, def->op))                      !set_default(def->var, def->val, def->op))
                     rc = false;                      rc = false;
   #endif
                 break;                  break;
             case DEFAULTS_RUNAS:              case DEFAULTS_RUNAS:
                 if (ISSET(what, SETDEF_RUNAS) &&                  if (ISSET(what, SETDEF_RUNAS) &&
                    runaslist_matches(&def->binding, NULL) == ALLOW &&                    runaslist_matches(&def->binding, NULL, NULL, NULL) == ALLOW &&
                     !set_default(def->var, def->val, def->op))                      !set_default(def->var, def->val, def->op))
                     rc = false;                      rc = false;
                 break;                  break;
Line 523  update_defaults(int what) Line 544  update_defaults(int what)
                     !set_default(def->var, def->val, def->op))                      !set_default(def->var, def->val, def->op))
                     rc = false;                      rc = false;
                 break;                  break;
           }
       }
       debug_return_bool(rc);
   }
   
   /*
    * Check the defaults entries without actually setting them.
    * Pass in an OR'd list of which default types to check.
    */
   bool
   check_defaults(int what, bool quiet)
   {
       struct sudo_defs_types *cur;
       struct defaults *def;
       bool rc = true;
       debug_decl(check_defaults, SUDO_DEBUG_DEFAULTS)
   
       tq_foreach_fwd(&defaults, def) {
           switch (def->type) {
               case DEFAULTS:
                   if (!ISSET(what, SETDEF_GENERIC))
                       continue;
                   break;
               case DEFAULTS_USER:
                   if (!ISSET(what, SETDEF_USER))
                       continue;
                   break;
               case DEFAULTS_RUNAS:
                   if (!ISSET(what, SETDEF_RUNAS))
                       continue;
                   break;
               case DEFAULTS_HOST:
                   if (!ISSET(what, SETDEF_HOST))
                       continue;
                   break;
               case DEFAULTS_CMND:
                   if (!ISSET(what, SETDEF_CMND))
                       continue;
                   break;
           }
           for (cur = sudo_defs_table; cur->name != NULL; cur++) {
               if (strcmp(def->var, cur->name) == 0)
                   break;
           }
           if (cur->name == NULL) {
               if (!quiet)
                   warningx(_("unknown defaults entry `%s'"), def->var);
               rc = false;
         }          }
     }      }
     debug_return_bool(rc);      debug_return_bool(rc);

Removed from v.1.1.1.2  
changed lines
  Added in v.1.1.1.5


FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>