Hi,

On Thu, Mar 07, 2024 at 02:18:28AM -0500, neeshy wrote:
> It seems that the modifications you made break the use case where su is
> called without a username. It would normally default to the root
> user, but now it invokes usage() instead. My original patch worked as
> intended. Could you rebase using the original patch instead? Thank you.
> 

Sadly, I cannot rebase it as it is already in the central repository.
What do you think about adding a new change like this:


diff --git a/su.c b/su.c
index eb8bea7..8eea82b 100644
--- a/su.c
+++ b/su.c
@@ -26,7 +26,7 @@ usage(void)
 int
 main(int argc, char *argv[])
 {
-       char *usr = "root", *pass;
+       char *usr, *pass;
        char *shell, *envshell, *term;
        struct passwd *pw;
        char *newargv[3];
@@ -43,9 +43,14 @@ main(int argc, char *argv[])
                usage();
        } ARGEND;
 
-       if (argc != 1)
+       if (argc > 1)
                usage();
-       usr = argv[0];
+       usr = argc > 0 ? argv[0] : "root";
 
        errno = 0;
        pw = getpwnam(usr);

I think it makes it simpler while keeping the correct behaviour that I broke.

Kind Regards,
Roberto Vargas

Reply via email to