Changeset: 1a9953c1fb92 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=1a9953c1fb92
Modified Files:
sql/configure.ag
sql/src/server/rel_updates.mx
Branch: Oct2010
Log Message:
Get rid of use of realpath.
We wanted to prevent people from specifying a file somewhere inside
the dbfarm, but there are too many portability issues at the moment,
so we just skip this part of the check.
Only database administrators may use COPY INTO with an actual file
name, and, presumably, they can read files inside the dbfarm already
anyway.
diffs (89 lines):
diff -r c1b0bd6e61e9 -r 1a9953c1fb92 sql/configure.ag
--- a/sql/configure.ag Tue Dec 14 13:27:40 2010 +0100
+++ b/sql/configure.ag Tue Dec 14 14:35:16 2010 +0100
@@ -80,8 +80,6 @@
AM_MONETDB_LIBS()
AM_MONETDB_UTILS()
-AC_CHECK_FUNCS([realpath])
-
req_monetdb5_ver='5.22.0'
# ^^^^^
# Maintained via vertoo. Please don't modify by hand!
diff -r c1b0bd6e61e9 -r 1a9953c1fb92 sql/src/server/rel_updates.mx
--- a/sql/src/server/rel_updates.mx Tue Dec 14 13:27:40 2010 +0100
+++ b/sql/src/server/rel_updates.mx Tue Dec 14 14:35:16 2010 +0100
@@ -592,22 +592,12 @@
return sql_error(sql, 02, "COPY INTO: database is in read-only
mode");
if (files) {
dnode *n = files->h;
-#ifdef HAVE_REALPATH
- char realdbfarm[PATH_MAX];
- char realfile[PATH_MAX];
-#endif
if (sql->user_id != USER_MONETDB)
return sql_error(sql, 02, "COPY INTO: insufficient
privileges: "
"COPY INTO from file(s) requires
administrator rights, "
"use 'COPY INTO \"%s\" FROM STDIN'
instead", tname);
-#ifdef HAVE_REALPATH
- if (realpath(GDKgetenv("gdk_dbfarm"), realdbfarm) == NULL) {
- return sql_error(sql, 02, "COPY INTO: failed to get
real path for dbfarm '%s'",
- GDKgetenv("gdk_dbfarm"));
- }
-#endif
for (; n; n = n->next) {
char *fname = n->data.sval;
@@ -616,15 +606,6 @@
if (fname && !MT_path_absolute(fname))
return sql_error(sql, 02, "COPY INTO: filename
must "
"have absolute path: %s",
fname);
-#ifdef HAVE_REALPATH
- if (realpath(fname, realfile) == NULL) {
- return sql_error(sql, 02, "COPY INTO: failed to
get real path for '%s'",
- fname);
- }
- if (strncmp(realdbfarm, realfile, strlen(realdbfarm))
== 0)
- return sql_error(sql, 02, "COPY INTO: file may
not "
- "reside in the server's dbfarm:
%s", realfile);
-#endif
nrel = rel_import(sql, t, tsep, rsep, ssep, ns, fname,
nr, offset);
@@ -741,10 +722,6 @@
static sql_rel *
copyto(mvc *sql, symbol *sq, str filename, dlist *seps, str null_string)
{
-#ifdef HAVE_REALPATH
- char realdbfarm[PATH_MAX];
- char realfile[PATH_MAX];
-#endif
char *tsep = seps->h->data.sval;
char *rsep = seps->h->next->data.sval;
char *ssep = (seps->h->next->next)?seps->h->next->next->data.sval:"\"";
@@ -768,22 +745,9 @@
return sql_error(sql, 02, "COPY INTO: insufficient
privileges: "
"COPY INTO file requires administrator
rights, "
"use 'COPY ... INTO STDOUT' instead");
- if (filename && *filename != '/')
+ if (filename && !MT_path_absolute(filename))
return sql_error(sql, 02, "COPY INTO: filename must "
"have absolute path: %s", filename);
-#ifdef HAVE_REALPATH
- if (realpath(GDKgetenv("gdk_dbfarm"), realdbfarm) == NULL) {
- return sql_error(sql, 02, "COPY INTO: failed to get
real path for dbfarm '%s'",
- GDKgetenv("gdk_dbfarm"));
- }
- if (realpath(filename, realfile) == NULL) {
- return sql_error(sql, 02, "COPY INTO: failed to get
real path for '%s'",
- filename);
- }
- if (strncmp(realdbfarm, realfile, strlen(realdbfarm)) == 0)
- return sql_error(sql, 02, "COPY INTO: file may not "
- "reside in the server's dbfarm: %s",
realfile);
-#endif
if (lstat(filename, &fs) == 0)
return sql_error(sql, 02, "COPY INTO: file already "
"exists: %s", filename);
_______________________________________________
Checkin-list mailing list
[email protected]
http://mail.monetdb.org/mailman/listinfo/checkin-list