Hi, I'm sure you all want to see it;)
-- Nekral
--- su.c.orig 2005-03-23 23:26:21.000000000 +0100 +++ su.c 2005-03-23 23:28:21.000000000 +0100 @@ -183,10 +183,6 @@ { const char **args; int argno = 1; - char cmd[BUFSIZ]; - int cmd_len_left = sizeof(cmd) - 1; - - cmd[0] = '\0'; if (additional_args) args = (const char **) xmalloc (sizeof (char *) @@ -212,28 +208,10 @@ args[0] = Basename(shell); if (command || additional_args) args[argno++] = "-c"; - if (command) { - if (strlen(command) > cmd_len_left) { - fprintf(stderr, _("Command line args too long\n")); - exit(1); - } - strcat(cmd, command); - cmd_len_left -= strlen(command); - } + if (command && command[0]) args[argno++] = command; if (additional_args) - for (; *additional_args; ++additional_args) { - if ((strlen(*additional_args) + 1) > cmd_len_left) { - fprintf(stderr, _("Command line args too long\n")); - exit(1); - } - if (cmd[0]) { - strcat(cmd, " "); - cmd_len_left--; - } - strcat(cmd, *additional_args); - cmd_len_left -= strlen(*additional_args); - } - if (cmd[0]) args[argno++] = cmd; + for (; *additional_args; ++additional_args) + args[argno++] = *additional_args; args[argno] = NULL; execv (shell, (char **) args); fprintf (stderr, _("No shell\n"));