From 2d53003432f8560b9c3adf569118747c8ac8447d Mon Sep 17 00:00:00 2001 From: Heikki Linnakangas Date: Fri, 24 Oct 2014 18:59:08 +0300 Subject: [PATCH] Complain if too many options are passed to pg_controldata or pg_resetxlog. --- src/bin/pg_controldata/pg_controldata.c | 10 ++++++++++ src/bin/pg_resetxlog/pg_resetxlog.c | 17 ++++++++++++++--- 2 files changed, 24 insertions(+), 3 deletions(-) diff --git a/src/bin/pg_controldata/pg_controldata.c b/src/bin/pg_controldata/pg_controldata.c index dd68f793c3..d0cf039f42 100644 --- a/src/bin/pg_controldata/pg_controldata.c +++ b/src/bin/pg_controldata/pg_controldata.c @@ -142,6 +142,16 @@ main(int argc, char *argv[]) DataDir = getenv("PGDATA"); } + /* Complain if any arguments remain */ + if (optind < argc) + { + fprintf(stderr, _("%s: too many command-line arguments (first is \"%s\")\n"), + progname, argv[optind]); + fprintf(stderr, _("Try \"%s --help\" for more information.\n"), + progname); + exit(1); + } + if (DataDir == NULL) { fprintf(stderr, _("%s: no data directory specified\n"), progname); diff --git a/src/bin/pg_resetxlog/pg_resetxlog.c b/src/bin/pg_resetxlog/pg_resetxlog.c index 028a1f0566..f4c1eafc67 100644 --- a/src/bin/pg_resetxlog/pg_resetxlog.c +++ b/src/bin/pg_resetxlog/pg_resetxlog.c @@ -237,14 +237,25 @@ main(int argc, char *argv[]) } } - if (DataDir == NULL && optind == argc) + if (DataDir == NULL && optind < argc) + DataDir = argv[optind++]; + + /* Complain if any arguments remain */ + if (optind < argc) + { + fprintf(stderr, _("%s: too many command-line arguments (first is \"%s\")\n"), + progname, argv[optind]); + fprintf(stderr, _("Try \"%s --help\" for more information.\n"), + progname); + exit(1); + } + + if (DataDir == NULL) { fprintf(stderr, _("%s: no data directory specified\n"), progname); fprintf(stderr, _("Try \"%s --help\" for more information.\n"), progname); exit(1); } - if (DataDir == NULL) - DataDir = argv[optind]; /* * Don't allow pg_resetxlog to be run as root, to avoid overwriting the -- 2.40.0