Commit 79f9ee9d authored by Tom Lane's avatar Tom Lane

Fix core dumps, inability to count, etc associated with canonicalize_path

patches.
parent d785841f
...@@ -8,7 +8,7 @@ ...@@ -8,7 +8,7 @@
* *
* *
* IDENTIFICATION * IDENTIFICATION
* $PostgreSQL: pgsql/src/backend/utils/fmgr/dfmgr.c,v 1.75 2004/07/12 02:22:49 momjian Exp $ * $PostgreSQL: pgsql/src/backend/utils/fmgr/dfmgr.c,v 1.76 2004/08/13 14:47:23 tgl Exp $
* *
*------------------------------------------------------------------------- *-------------------------------------------------------------------------
*/ */
...@@ -405,10 +405,11 @@ find_in_dynamic_libpath(const char *basename) ...@@ -405,10 +405,11 @@ find_in_dynamic_libpath(const char *basename)
strncpy(piece, p, len); strncpy(piece, p, len);
piece[len] = '\0'; piece[len] = '\0';
canonicalize_path(piece);
mangled = substitute_libpath_macro(piece); mangled = substitute_libpath_macro(piece);
pfree(piece); pfree(piece);
canonicalize_path(mangled);
/* only absolute paths */ /* only absolute paths */
if (!is_absolute_path(mangled)) if (!is_absolute_path(mangled))
ereport(ERROR, ereport(ERROR,
......
...@@ -3,7 +3,7 @@ ...@@ -3,7 +3,7 @@
* *
* Copyright (c) 2000-2003, PostgreSQL Global Development Group * Copyright (c) 2000-2003, PostgreSQL Global Development Group
* *
* $PostgreSQL: pgsql/src/bin/psql/command.c,v 1.122 2004/07/15 03:56:06 momjian Exp $ * $PostgreSQL: pgsql/src/bin/psql/command.c,v 1.123 2004/08/13 14:47:23 tgl Exp $
*/ */
#include "postgres_fe.h" #include "postgres_fe.h"
#include "command.h" #include "command.h"
...@@ -375,7 +375,8 @@ exec_command(const char *cmd, ...@@ -375,7 +375,8 @@ exec_command(const char *cmd,
fname = psql_scan_slash_option(scan_state, fname = psql_scan_slash_option(scan_state,
OT_NORMAL, NULL, true); OT_NORMAL, NULL, true);
expand_tilde(&fname); expand_tilde(&fname);
canonicalize_path(fname); if (fname)
canonicalize_path(fname);
status = do_edit(fname, query_buf) ? CMD_NEWEDIT : CMD_ERROR; status = do_edit(fname, query_buf) ? CMD_NEWEDIT : CMD_ERROR;
free(fname); free(fname);
} }
......
...@@ -3,7 +3,7 @@ ...@@ -3,7 +3,7 @@
* *
* Copyright (c) 2000-2003, PostgreSQL Global Development Group * Copyright (c) 2000-2003, PostgreSQL Global Development Group
* *
* $PostgreSQL: pgsql/src/bin/psql/copy.c,v 1.50 2004/07/11 21:34:03 momjian Exp $ * $PostgreSQL: pgsql/src/bin/psql/copy.c,v 1.51 2004/08/13 14:47:23 tgl Exp $
*/ */
#include "postgres_fe.h" #include "postgres_fe.h"
#include "copy.h" #include "copy.h"
...@@ -513,7 +513,8 @@ do_copy(const char *args) ...@@ -513,7 +513,8 @@ do_copy(const char *args)
appendPQExpBuffer(&query, " FORCE NOT NULL %s", options->force_notnull_list); appendPQExpBuffer(&query, " FORCE NOT NULL %s", options->force_notnull_list);
} }
canonicalize_path(options->file); if (options->file)
canonicalize_path(options->file);
if (options->from) if (options->from)
{ {
......
...@@ -8,7 +8,7 @@ ...@@ -8,7 +8,7 @@
* *
* *
* IDENTIFICATION * IDENTIFICATION
* $PostgreSQL: pgsql/src/port/path.c,v 1.29 2004/08/12 19:03:44 momjian Exp $ * $PostgreSQL: pgsql/src/port/path.c,v 1.30 2004/08/13 14:47:23 tgl Exp $
* *
*------------------------------------------------------------------------- *-------------------------------------------------------------------------
*/ */
...@@ -335,7 +335,7 @@ set_pglocale_pgservice(const char *argv0, const char *app) ...@@ -335,7 +335,7 @@ set_pglocale_pgservice(const char *argv0, const char *app)
{ {
char path[MAXPGPATH]; char path[MAXPGPATH];
char my_exec_path[MAXPGPATH]; char my_exec_path[MAXPGPATH];
char env_path[MAXPGPATH + sizeof("PGLOCALEDIR=")]; /* longer than PGSYSCONFDIR */ char env_path[MAXPGPATH + sizeof("PGSYSCONFDIR=")]; /* longer than PGLOCALEDIR */
/* don't set LC_ALL in the backend */ /* don't set LC_ALL in the backend */
if (strcmp(app, "postgres") != 0) if (strcmp(app, "postgres") != 0)
...@@ -353,7 +353,7 @@ set_pglocale_pgservice(const char *argv0, const char *app) ...@@ -353,7 +353,7 @@ set_pglocale_pgservice(const char *argv0, const char *app)
{ {
/* set for libpq to use */ /* set for libpq to use */
snprintf(env_path, sizeof(env_path), "PGLOCALEDIR=%s", path); snprintf(env_path, sizeof(env_path), "PGLOCALEDIR=%s", path);
canonicalize_path(env_path); canonicalize_path(env_path + 12);
putenv(strdup(env_path)); putenv(strdup(env_path));
} }
#endif #endif
...@@ -364,7 +364,7 @@ set_pglocale_pgservice(const char *argv0, const char *app) ...@@ -364,7 +364,7 @@ set_pglocale_pgservice(const char *argv0, const char *app)
/* set for libpq to use */ /* set for libpq to use */
snprintf(env_path, sizeof(env_path), "PGSYSCONFDIR=%s", path); snprintf(env_path, sizeof(env_path), "PGSYSCONFDIR=%s", path);
canonicalize_path(env_path); canonicalize_path(env_path + 13);
putenv(strdup(env_path)); putenv(strdup(env_path));
} }
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment