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

Reply via email to