Skip to content

Commit aa74885

Browse files
author
git-core
committed
Prepare to implement argument passing from su command line to a callee
1 parent c29f8d4 commit aa74885

File tree

1 file changed

+8
-2
lines changed

1 file changed

+8
-2
lines changed

su.c

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -286,6 +286,8 @@ static void allow(char *shell, mode_t mask)
286286
struct su_initiator *from = &su_from;
287287
struct su_request *to = &su_to;
288288
char *exe = NULL;
289+
char *argv[4];
290+
int argc = 0;
289291
int err;
290292

291293
umask(mask);
@@ -306,11 +308,15 @@ static void allow(char *shell, mode_t mask)
306308
}
307309
LOGD("%u %s executing %u %s using shell %s : %s", from->uid, from->bin,
308310
to->uid, to->command, shell, exe);
311+
argv[argc++] = exe;
309312
if (strcmp(to->command, DEFAULT_COMMAND)) {
310-
execl(shell, exe, "-c", to->command, (char*)NULL);
313+
argv[argc++] = "-c";
314+
argv[argc++] = to->command;
311315
} else {
312-
execl(shell, exe, "-", (char*)NULL);
316+
argv[argc++] = "-";
313317
}
318+
argv[argc] = NULL;
319+
execv(shell, argv);
314320
err = errno;
315321
PLOGE("exec");
316322
fprintf(stderr, "Cannot execute %s: %s\n", shell, strerror(err));

0 commit comments

Comments
 (0)