Check the return value of getcwd(), instead of assuming success.
authorRobert Haas <[email protected]>
Fri, 4 Nov 2011 14:40:25 +0000 (10:40 -0400)
committerRobert Haas <[email protected]>
Fri, 4 Nov 2011 14:40:25 +0000 (10:40 -0400)
Kevin Grittner

contrib/pg_upgrade/option.c

index 9892b9764df24d7406313b514863692fa4ddfc44..026f71e562d16cf42e5f7d45505de4a83ae34c3e 100644 (file)
@@ -56,6 +56,7 @@ parseCommandLine(int argc, char *argv[])
    int         option;         /* Command line option */
    int         optindex = 0;   /* used by getopt_long */
    int         os_user_effective_id;
+   char        *return_buf;
 
    user_opts.transfer_mode = TRANSFER_MODE_COPY;
 
@@ -93,7 +94,9 @@ parseCommandLine(int argc, char *argv[])
    if (os_user_effective_id == 0)
        pg_log(PG_FATAL, "%s: cannot be run as root\n", os_info.progname);
 
-   getcwd(os_info.cwd, MAXPGPATH);
+   return_buf = getcwd(os_info.cwd, MAXPGPATH);
+   if (return_buf == NULL)
+       pg_log(PG_FATAL, "Could not access current working directory: %s\n", getErrorText(errno));
 
    while ((option = getopt_long(argc, argv, "d:D:b:B:cgG:kl:o:O:p:P:u:v",
                                 long_options, &optindex)) != -1)