From e663c696c2a6ccf46e2b68a2b0a3c2a6f52c17dd Mon Sep 17 00:00:00 2001 From: nekral-guest Date: Wed, 26 Dec 2007 15:10:48 +0000 Subject: [PATCH] su's arguments are now reordered. If needed, use -- to separate su's options from the shell's options. --- ChangeLog | 5 +++++ NEWS | 3 +++ src/su.c | 14 ++------------ 3 files changed, 10 insertions(+), 12 deletions(-) diff --git a/ChangeLog b/ChangeLog index 9e2046e1..fd138616 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2007-12-26 Nicolas François + + Merge Debian's patch 480_getopt_args_reorder + * NEWS, src/su.c: su's arguments are now reordered. + 2007-12-26 Nicolas François Merge RedHat's patch shadow-4.0.18.1-mtime.patch: diff --git a/NEWS b/NEWS index 4e4e539e..e6a6870c 100644 --- a/NEWS +++ b/NEWS @@ -10,6 +10,9 @@ shadow-4.1.0 -> shadow-4.1.1 UNRELEASED - usermod * Keep the access and modification time of files when moving an user's home directory. +- su + * su's arguments are now reordered. If needed, use -- to separate su's + options from the shell's options. shadow-4.0.18.2 -> shadow-4.1.0 09-12-2008 diff --git a/src/su.c b/src/su.c index 878920da..9917a2cc 100644 --- a/src/su.c +++ b/src/su.c @@ -362,19 +362,9 @@ int main (int argc, char **argv) }; while ((c = - getopt_long (argc, argv, "-c:hlmps:", long_options, + getopt_long (argc, argv, "c:hlmps:", long_options, &option_index)) != -1) { switch (c) { - case 1: - /* this is not an su option */ - /* The next arguments are either '-', the - * target name, or arguments to be passed - * to the shell. - */ - /* rewind the (not yet handled) option */ - optind--; - goto end_su_options; - break; /* NOT REACHED */ case 'c': command = optarg; break; @@ -399,7 +389,7 @@ int main (int argc, char **argv) usage (); /* NOT REACHED */ } } - end_su_options: + if (optind < argc && !strcmp (argv[optind], "-")) { fakelogin = 1; optind++;