diff options
Diffstat (limited to 'security/krb5-appl/files/patch-as')
-rw-r--r-- | security/krb5-appl/files/patch-as | 338 |
1 files changed, 144 insertions, 194 deletions
diff --git a/security/krb5-appl/files/patch-as b/security/krb5-appl/files/patch-as index 519a1c74d4cb..badcda3daa6b 100644 --- a/security/krb5-appl/files/patch-as +++ b/security/krb5-appl/files/patch-as @@ -1,194 +1,144 @@ -*** clients/ksu/main.c.ORIG Fri Feb 6 19:41:57 1998 ---- clients/ksu/main.c Tue Jun 30 19:46:02 1998 -*************** -*** 56,62 **** - ill specified arguments to commands */ - - void usage (){ -! fprintf(stderr, "Usage: %s [target user] [-n principal] [-c source cachename] [-C target cachename] [-k] [-D] [-r time] [-pf] [-l lifetime] [-zZ] [-q] [-e command [args... ] ] [-a [args... ] ]\n", prog_name); - - } - ---- 56,62 ---- - ill specified arguments to commands */ - - void usage (){ -! fprintf(stderr, "Usage: %s [target user] [-m] [-n principal] [-c source cachename] [-C target cachename] [-k] [-D] [-r time] [-pf] [-l lifetime] [-zZ] [-q] [-e command [args... ] ] [-a [args... ] ]\n", prog_name); - - } - -*************** -*** 75,80 **** ---- 75,81 ---- - int argc; - char ** argv; - { -+ int asme = 0; - int hp =0; - int some_rest_copy = 0; - int all_rest_copy = 0; -*************** -*** 90,95 **** ---- 91,97 ---- - char * cc_target_tag = NULL; - char * target_user = NULL; - char * source_user; -+ char * source_shell; - - krb5_ccache cc_source = NULL; - char * cc_source_tag = NULL; -*************** -*** 174,180 **** - } - - -! while(!done && ((option = getopt(pargc, pargv,"n:c:C:r:a:zZDfpkql:e:")) != -1)){ - switch (option) { - case 'r': - options.opt |= KDC_OPT_RENEWABLE; ---- 176,182 ---- - } - - -! while(!done && ((option = getopt(pargc, pargv,"n:c:C:r:a:zZDfpkmql:e:")) != -1)){ - switch (option) { - case 'r': - options.opt |= KDC_OPT_RENEWABLE; -*************** -*** 216,221 **** ---- 218,226 ---- - errflg++; - } - break; -+ case 'm': -+ asme = 1; -+ break; - case 'n': - if ((retval = krb5_parse_name(ksu_context, optarg, &client))){ - com_err(prog_name, retval, "when parsing name %s", optarg); -*************** -*** 355,362 **** - exit(1); - } - -! /* allocate space and copy the usernamane there */ - source_user = strdup(pwd->pw_name); - source_uid = pwd->pw_uid; - source_gid = pwd->pw_gid; - ---- 360,368 ---- - exit(1); - } - -! /* allocate space and copy the username there */ - source_user = strdup(pwd->pw_name); -+ source_shell = strdup(pwd->pw_shell); - source_uid = pwd->pw_uid; - source_gid = pwd->pw_gid; - -*************** -*** 727,769 **** - /* get the shell of the user, this will be the shell used by su */ - target_pwd = getpwnam(target_user); - -! if (target_pwd->pw_shell) -! shell = strdup(target_pwd->pw_shell); -! else { -! shell = _DEF_CSH; /* default is cshell */ -! } - - #ifdef HAVE_GETUSERSHELL - - /* insist that the target login uses a standard shell (root is omited) */ - -! if (!standard_shell(target_pwd->pw_shell) && source_uid) { -! fprintf(stderr, "ksu: permission denied (shell).\n"); -! sweep_up(ksu_context, use_source_cache, cc_target); -! exit(1); - } - #endif /* HAVE_GETUSERSHELL */ - -! if (target_pwd->pw_uid){ -! -! if(set_env_var("USER", target_pwd->pw_name)){ -! fprintf(stderr,"ksu: couldn't set environment variable USER\n"); -! sweep_up(ksu_context, use_source_cache, cc_target); -! exit(1); -! } -! } -! -! if(set_env_var( "HOME", target_pwd->pw_dir)){ -! fprintf(stderr,"ksu: couldn't set environment variable USER\n"); -! sweep_up(ksu_context, use_source_cache, cc_target); -! exit(1); -! } -! -! if(set_env_var( "SHELL", shell)){ -! fprintf(stderr,"ksu: couldn't set environment variable USER\n"); -! sweep_up(ksu_context, use_source_cache, cc_target); -! exit(1); -! } - - /* set the cc env name to target */ - ---- 733,792 ---- - /* get the shell of the user, this will be the shell used by su */ - target_pwd = getpwnam(target_user); - -! if (asme) { -! if (source_shell && *source_shell) { -! shell = strdup(source_shell); -! } else { -! shell = _DEF_CSH; -! } -! } else { -! if (target_pwd->pw_shell) -! shell = strdup(target_pwd->pw_shell); -! else { -! shell = _DEF_CSH; /* default is cshell */ -! } -! } - - #ifdef HAVE_GETUSERSHELL - - /* insist that the target login uses a standard shell (root is omited) */ - -! if (asme) { -! if (!standard_shell(pwd->pw_shell) && source_uid) { -! fprintf(stderr, "ksu: permission denied (shell).\n"); -! sweep_up(ksu_context, use_source_cache, cc_target); -! exit(1); -! } -! } else { -! if (!standard_shell(target_pwd->pw_shell) && source_uid) { -! fprintf(stderr, "ksu: permission denied (shell).\n"); -! sweep_up(ksu_context, use_source_cache, cc_target); -! exit(1); -! } - } - #endif /* HAVE_GETUSERSHELL */ - -! if (!asme) { -! if (target_pwd->pw_uid){ -! if (set_env_var("USER", target_pwd->pw_name)){ -! fprintf(stderr,"ksu: couldn't set environment variable USER\n"); -! sweep_up(ksu_context, use_source_cache, cc_target); -! exit(1); -! } -! } -! -! if (set_env_var( "HOME", target_pwd->pw_dir)){ -! fprintf(stderr,"ksu: couldn't set environment variable USER\n"); -! sweep_up(ksu_context, use_source_cache, cc_target); -! exit(1); -! } -! -! if (set_env_var( "SHELL", shell)){ -! fprintf(stderr,"ksu: couldn't set environment variable USER\n"); -! sweep_up(ksu_context, use_source_cache, cc_target); -! exit(1); -! } -! } - - /* set the cc env name to target */ - +--- clients/ksu/main.c.ORIG Fri Dec 17 14:44:39 1999 ++++ clients/ksu/main.c Fri Dec 17 18:52:57 1999 +@@ -56,7 +56,7 @@ + ill specified arguments to commands */ + + void usage (){ +- fprintf(stderr, "Usage: %s [target user] [-n principal] [-c source cachename] [-C target cachename] [-k] [-D] [-r time] [-pf] [-l lifetime] [-zZ] [-q] [-e command [args... ] ] [-a [args... ] ]\n", prog_name); ++ fprintf(stderr, "Usage: %s [target user] [-m] [-n principal] [-c source cachename] [-C target cachename] [-k] [-D] [-r time] [-pf] [-l lifetime] [-zZ] [-q] [-e command [args... ] ] [-a [args... ] ]\n", prog_name); + + } + +@@ -75,6 +75,7 @@ + int argc; + char ** argv; + { ++int asme = 0; + int hp =0; + int some_rest_copy = 0; + int all_rest_copy = 0; +@@ -90,6 +91,7 @@ + char * cc_target_tag = NULL; + char * target_user = NULL; + char * source_user; ++char * source_shell; + + krb5_ccache cc_source = NULL; + const char * cc_source_tag = NULL; +@@ -173,7 +175,7 @@ + } + + +- while(!done && ((option = getopt(pargc, pargv,"n:c:r:a:zZDfpkql:e:")) != -1)){ ++ while(!done && ((option = getopt(pargc, pargv,"n:c:r:a:zZDfpkmql:e:")) != -1)){ + switch (option) { + case 'r': + options.opt |= KDC_OPT_RENEWABLE; +@@ -219,6 +221,9 @@ + errflg++; + } + break; ++ case 'm': ++ asme = 1; ++ break; + case 'n': + if ((retval = krb5_parse_name(ksu_context, optarg, &client))){ + com_err(prog_name, retval, "when parsing name %s", optarg); +@@ -326,6 +331,7 @@ + + /* allocate space and copy the usernamane there */ + source_user = xstrdup(pwd->pw_name); ++ source_shell = xstrdup(pwd->pw_shell); + source_uid = pwd->pw_uid; + source_gid = pwd->pw_gid; + +@@ -699,43 +705,60 @@ + /* get the shell of the user, this will be the shell used by su */ + target_pwd = getpwnam(target_user); + +- if (target_pwd->pw_shell) +- shell = xstrdup(target_pwd->pw_shell); +- else { +- shell = _DEF_CSH; /* default is cshell */ +- } ++ if (asme) { ++ if (source_shell && *source_shell) { ++ shell = strdup(source_shell); ++ } else { ++ shell = _DEF_CSH; ++ } ++ } else { ++ if (target_pwd->pw_shell) ++ shell = strdup(target_pwd->pw_shell); ++ else { ++ shell = _DEF_CSH; /* default is cshell */ ++ } ++ } + + #ifdef HAVE_GETUSERSHELL + + /* insist that the target login uses a standard shell (root is omited) */ + +- if (!standard_shell(target_pwd->pw_shell) && source_uid) { +- fprintf(stderr, "ksu: permission denied (shell).\n"); +- sweep_up(ksu_context, use_source_cache, cc_target); +- exit(1); ++ if (asme) { ++ if (!standard_shell(pwd->pw_shell) && source_uid) { ++ fprintf(stderr, "ksu: permission denied (shell).\n"); ++ sweep_up(ksu_context, use_source_cache, cc_target); ++ exit(1); ++ } ++ } else { ++ if (!standard_shell(target_pwd->pw_shell) && source_uid) { ++ fprintf(stderr, "ksu: permission denied (shell).\n"); ++ sweep_up(ksu_context, use_source_cache, cc_target); ++ exit(1); ++ } + } + #endif /* HAVE_GETUSERSHELL */ + +- if (target_pwd->pw_uid){ +- +- if(set_env_var("USER", target_pwd->pw_name)){ +- fprintf(stderr,"ksu: couldn't set environment variable USER\n"); +- sweep_up(ksu_context, use_source_cache, cc_target); +- exit(1); +- } +- } +- +- if(set_env_var( "HOME", target_pwd->pw_dir)){ +- fprintf(stderr,"ksu: couldn't set environment variable USER\n"); +- sweep_up(ksu_context, use_source_cache, cc_target); +- exit(1); +- } +- +- if(set_env_var( "SHELL", shell)){ +- fprintf(stderr,"ksu: couldn't set environment variable USER\n"); +- sweep_up(ksu_context, use_source_cache, cc_target); +- exit(1); +- } ++ if (!asme) { ++ if (target_pwd->pw_uid){ ++ if (set_env_var("USER", target_pwd->pw_name)){ ++ fprintf(stderr,"ksu: couldn't set environment variable USER\n"); ++ sweep_up(ksu_context, use_source_cache, cc_target); ++ exit(1); ++ } ++ } ++ ++ if (set_env_var( "HOME", target_pwd->pw_dir)){ ++ fprintf(stderr,"ksu: couldn't set environment variable USER\n"); ++ sweep_up(ksu_context, use_source_cache, cc_target); ++ exit(1); ++ } ++ ++ if (set_env_var( "SHELL", shell)){ ++ fprintf(stderr,"ksu: couldn't set environment variable USER\n"); ++ sweep_up(ksu_context, use_source_cache, cc_target); ++ exit(1); ++ } ++ } + + /* set the cc env name to target */ + |