]> git.ipfire.org Git - thirdparty/postgresql.git/commitdiff
Reject missing database name in pg_regress and cohorts.
authorTom Lane <tgl@sss.pgh.pa.us>
Wed, 30 Nov 2022 18:01:41 +0000 (13:01 -0500)
committerTom Lane <tgl@sss.pgh.pa.us>
Wed, 30 Nov 2022 18:01:41 +0000 (13:01 -0500)
Writing "pg_regress --dbname= ..." led to a crash, because
we weren't expecting there to be no database name supplied.
It doesn't seem like a great idea to run regression tests
in whatever is the user's default database; so rather than
supporting this case let's explicitly reject it.

Per report from Xing Guo.  Back-patch to all supported
branches.

Discussion: https://postgr.es/m/CACpMh+A8cRvtvtOWVAZsCM1DU81GK4DL26R83y6ugZ1osV=ifA@mail.gmail.com

src/test/regress/pg_regress.c

index 9b3b5d82d8a786f133bd8b1c1f086a3ccb4cf9a1..bc16d04b9f13fff6d833502d0cd63c5a537f3684 100644 (file)
@@ -2257,6 +2257,17 @@ regression_main(int argc, char *argv[], init_function ifunc, test_function tfunc
                optind++;
        }
 
+       /*
+        * We must have a database to run the tests in; either a default name, or
+        * one supplied by the --dbname switch.
+        */
+       if (!(dblist && dblist->str && dblist->str[0]))
+       {
+               fprintf(stderr, _("%s: no database name was specified\n"),
+                               progname);
+               exit(2);
+       }
+
        if (config_auth_datadir)
        {
 #ifdef ENABLE_SSPI