Fix potential coredump on bad locale value in pg_upgrade.
authorTom Lane <tgl@sss.pgh.pa.us>
Thu, 30 Jan 2014 23:10:01 +0000 (18:10 -0500)
committerTom Lane <tgl@sss.pgh.pa.us>
Thu, 30 Jan 2014 23:10:24 +0000 (18:10 -0500)
Thinko in error report (and a typo in the message text, too).  We're
failing anyway, but it would be good to print something useful first.
Noted while reviewing a patch to make pg_upgrade's locale code laxer.

contrib/pg_upgrade/check.c

index a706708f4d291eea6fe696e0070441baacdbfcb0..e395c7c7f629694328d88912d51b473c07df1721 100644 (file)
@@ -990,6 +990,7 @@ get_canonical_locale_name(int category, const char *locale)
    char       *save;
    char       *res;
 
+   /* get the current setting, so we can restore it. */
    save = setlocale(category, NULL);
    if (!save)
        pg_fatal("failed to get the current locale\n");
@@ -1001,7 +1002,7 @@ get_canonical_locale_name(int category, const char *locale)
    res = setlocale(category, locale);
 
    if (!res)
-       pg_fatal("failed to get system local name for \"%s\"\n", res);
+       pg_fatal("failed to get system locale name for \"%s\"\n", locale);
 
    res = pg_strdup(res);