Diff for /embedaddon/sudo/src/parse_args.c between versions 1.1.1.1 and 1.1.1.2

version 1.1.1.1, 2012/02/21 16:23:02 version 1.1.1.2, 2012/05/29 12:26:49
Line 1 Line 1
 /*  /*
 * Copyright (c) 1993-1996, 1998-2011 Todd C. Miller <Todd.Miller@courtesan.com> * Copyright (c) 1993-1996, 1998-2012 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
  * purpose with or without fee is hereby granted, provided that the above   * purpose with or without fee is hereby granted, provided that the above
Line 72  static struct sudo_settings { Line 72  static struct sudo_settings {
     { "bsdauth_type" },      { "bsdauth_type" },
 #define ARG_LOGIN_CLASS 1  #define ARG_LOGIN_CLASS 1
     { "login_class" },      { "login_class" },
#define ARG_DEBUG_LEVEL 2#define ARG_DEBUG_FLAGS 2
    { "debug_level" },    { "debug_flags" },
 #define ARG_PRESERVE_ENVIRONMENT 3  #define ARG_PRESERVE_ENVIRONMENT 3
     { "preserve_environment" },      { "preserve_environment" },
 #define ARG_RUNAS_GROUP 4  #define ARG_RUNAS_GROUP 4
Line 126  parse_args(int argc, char **argv, int *nargc, char *** Line 126  parse_args(int argc, char **argv, int *nargc, char ***
     int valid_flags, ch;      int valid_flags, ch;
     int i, j;      int i, j;
     char *cp, **env_add, **settings;      char *cp, **env_add, **settings;
       const char *debug_flags;
     int nenv = 0;      int nenv = 0;
     int env_size = 32;      int env_size = 32;
       debug_decl(parse_args, SUDO_DEBUG_ARGS)
   
     env_add = emalloc2(env_size, sizeof(char *));      env_add = emalloc2(env_size, sizeof(char *));
   
Line 144  parse_args(int argc, char **argv, int *nargc, char *** Line 146  parse_args(int argc, char **argv, int *nargc, char ***
     if (get_net_ifs(&cp) > 0)      if (get_net_ifs(&cp) > 0)
         sudo_settings[ARG_NET_ADDRS].value = cp;          sudo_settings[ARG_NET_ADDRS].value = cp;
   
       /* Set debug file and flags from sudo.conf. */
       debug_flags = sudo_conf_debug_flags();
       if (debug_flags != NULL)
           sudo_settings[ARG_DEBUG_FLAGS].value = debug_flags;
   
     /* Returns true if the last option string was "--" */      /* Returns true if the last option string was "--" */
 #define got_end_of_args (optind > 1 && argv[optind - 1][0] == '-' && \  #define got_end_of_args (optind > 1 && argv[optind - 1][0] == '-' && \
             argv[optind - 1][1] == '-' && argv[optind - 1][2] == '\0')              argv[optind - 1][1] == '-' && argv[optind - 1][2] == '\0')
Line 188  parse_args(int argc, char **argv, int *nargc, char *** Line 195  parse_args(int argc, char **argv, int *nargc, char ***
                     break;                      break;
 #endif  #endif
                 case 'D':                  case 'D':
                    if ((debug_level = atoi(optarg)) < 1 || debug_level > 9) {                    /* Ignored for backwards compatibility. */
                        warningx(_("the argument to -D must be between 1 and 9 inclusive")); 
                        usage(1); 
                    } 
                    sudo_settings[ARG_DEBUG_LEVEL].value = optarg; 
                     break;                      break;
                 case 'E':                  case 'E':
                     sudo_settings[ARG_PRESERVE_ENVIRONMENT].value = "true";                      sudo_settings[ARG_PRESERVE_ENVIRONMENT].value = "true";
Line 314  parse_args(int argc, char **argv, int *nargc, char *** Line 317  parse_args(int argc, char **argv, int *nargc, char ***
     if (!mode) {      if (!mode) {
         /* Defer -k mode setting until we know whether it is a flag or not */          /* Defer -k mode setting until we know whether it is a flag or not */
         if (sudo_settings[ARG_IGNORE_TICKET].value != NULL) {          if (sudo_settings[ARG_IGNORE_TICKET].value != NULL) {
            if (argc == 0) {            if (argc == 0 && !(flags & (MODE_SHELL|MODE_LOGIN_SHELL))) {
                 mode = MODE_INVALIDATE; /* -k by itself */                  mode = MODE_INVALIDATE; /* -k by itself */
                 sudo_settings[ARG_IGNORE_TICKET].value = NULL;                  sudo_settings[ARG_IGNORE_TICKET].value = NULL;
                 valid_flags = 0;                  valid_flags = 0;
Line 421  parse_args(int argc, char **argv, int *nargc, char *** Line 424  parse_args(int argc, char **argv, int *nargc, char ***
     settings = emalloc2(NUM_SETTINGS + 1, sizeof(char *));      settings = emalloc2(NUM_SETTINGS + 1, sizeof(char *));
     for (i = 0, j = 0; i < NUM_SETTINGS; i++) {      for (i = 0, j = 0; i < NUM_SETTINGS; i++) {
         if (sudo_settings[i].value) {          if (sudo_settings[i].value) {
            sudo_debug(9, "settings: %s=%s", sudo_settings[i].name,            sudo_debug_printf(SUDO_DEBUG_INFO, "settings: %s=%s",
                sudo_settings[i].value);                sudo_settings[i].name, sudo_settings[i].value);
             settings[j] = fmt_string(sudo_settings[i].name,              settings[j] = fmt_string(sudo_settings[i].name,
                 sudo_settings[i].value);                  sudo_settings[i].value);
             if (settings[j] == NULL)              if (settings[j] == NULL)
Line 447  parse_args(int argc, char **argv, int *nargc, char *** Line 450  parse_args(int argc, char **argv, int *nargc, char ***
     *env_addp = env_add;      *env_addp = env_add;
     *nargc = argc;      *nargc = argc;
     *nargv = argv;      *nargv = argv;
    return mode | flags;    debug_return_int(mode | flags);
 }  }
   
 static int  static int
Line 510  usage(int fatal) Line 513  usage(int fatal)
 static void  static void
 usage_excl(int fatal)  usage_excl(int fatal)
 {  {
       debug_decl(usage_excl, SUDO_DEBUG_ARGS)
   
     warningx(_("Only one of the -e, -h, -i, -K, -l, -s, -v or -V options may be specified"));      warningx(_("Only one of the -e, -h, -i, -K, -l, -s, -v or -V options may be specified"));
     usage(fatal);      usage(fatal);
 }  }
Line 520  help(void) Line 525  help(void)
     struct lbuf lbuf;      struct lbuf lbuf;
     int indent = 16;      int indent = 16;
     const char *pname = getprogname();      const char *pname = getprogname();
       debug_decl(help, SUDO_DEBUG_ARGS)
   
     lbuf_init(&lbuf, usage_out, indent, NULL, user_details.ts_cols);      lbuf_init(&lbuf, usage_out, indent, NULL, user_details.ts_cols);
     if (strcmp(pname, "sudoedit") == 0)      if (strcmp(pname, "sudoedit") == 0)
Line 593  help(void) Line 599  help(void)
         _("stop processing command line arguments\n"));          _("stop processing command line arguments\n"));
     lbuf_print(&lbuf);      lbuf_print(&lbuf);
     lbuf_destroy(&lbuf);      lbuf_destroy(&lbuf);
       sudo_debug_exit_int(__func__, __FILE__, __LINE__, sudo_debug_subsys, 0);
     exit(0);      exit(0);
 }  }

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


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