From 390a7590fe58cf6f2135a63a4710ff42c29d24a2 Mon Sep 17 00:00:00 2001 From: Assar Westerlund Date: Wed, 21 Apr 1999 09:16:12 +0000 Subject: [PATCH] (-f): implement git-svn-id: svn://svn.h5l.se/heimdal/trunk/heimdal@6024 ec53bebd-3082-4978-b11e-865c3cabbd6b --- appl/su/su.c | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) diff --git a/appl/su/su.c b/appl/su/su.c index db0e7f419..6f6ff3814 100644 --- a/appl/su/su.c +++ b/appl/su/su.c @@ -312,17 +312,28 @@ main(int argc, char **argv) int i; char **args; char *p; - args = malloc((1 + argc - optind + 1) * sizeof(*args)); + p = strrchr(shell, '/'); if(p) p++; else p = shell; + + if (strcmp(p, "csh") != 0) + csh_f_flag = 0; + + args = malloc((1 + argc - optind + 1 + csh_f_flag) * sizeof(*args)); + if (args == NULL) + err (1, "malloc"); + i = 0; if(full_login) - asprintf(&args[0], "-%s", p); + asprintf(&args[i++], "-%s", p); else - args[0] = p; - for(i = 1; i < argc - optind + 1; i++) + args[i++] = p; + if (csh_f_flag) + args[i++] = "-f"; + + for(; i < argc - optind + i; i++) args[i] = argv[optind + i - 1]; args[i] = NULL; if(setgid(su_info->pw_gid) < 0)