(-f): implement
git-svn-id: svn://svn.h5l.se/heimdal/trunk/heimdal@6024 ec53bebd-3082-4978-b11e-865c3cabbd6b
This commit is contained in:
19
appl/su/su.c
19
appl/su/su.c
@@ -312,17 +312,28 @@ main(int argc, char **argv)
|
|||||||
int i;
|
int i;
|
||||||
char **args;
|
char **args;
|
||||||
char *p;
|
char *p;
|
||||||
args = malloc((1 + argc - optind + 1) * sizeof(*args));
|
|
||||||
p = strrchr(shell, '/');
|
p = strrchr(shell, '/');
|
||||||
if(p)
|
if(p)
|
||||||
p++;
|
p++;
|
||||||
else
|
else
|
||||||
p = shell;
|
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)
|
if(full_login)
|
||||||
asprintf(&args[0], "-%s", p);
|
asprintf(&args[i++], "-%s", p);
|
||||||
else
|
else
|
||||||
args[0] = p;
|
args[i++] = p;
|
||||||
for(i = 1; i < argc - optind + 1; i++)
|
if (csh_f_flag)
|
||||||
|
args[i++] = "-f";
|
||||||
|
|
||||||
|
for(; i < argc - optind + i; i++)
|
||||||
args[i] = argv[optind + i - 1];
|
args[i] = argv[optind + i - 1];
|
||||||
args[i] = NULL;
|
args[i] = NULL;
|
||||||
if(setgid(su_info->pw_gid) < 0)
|
if(setgid(su_info->pw_gid) < 0)
|
||||||
|
Reference in New Issue
Block a user