summaryrefslogtreecommitdiff
path: root/source3/smbd/service.c
diff options
context:
space:
mode:
authorVolker Lendecke <vlendec@samba.org>2007-01-31 13:09:07 +0000
committerGerald (Jerry) Carter <jerry@samba.org>2007-10-10 12:17:34 -0500
commit37a3339a1891f0189ff62891e6be85ace23efc33 (patch)
treec9ebe817b0b99c677b46df209b3a9094c77c20d1 /source3/smbd/service.c
parent6490e114b8e9ffc9d35a0eaee66f9bdef65708fc (diff)
downloadsamba-37a3339a1891f0189ff62891e6be85ace23efc33.tar.gz
samba-37a3339a1891f0189ff62891e6be85ace23efc33.tar.bz2
samba-37a3339a1891f0189ff62891e6be85ace23efc33.zip
r21082: Make canonicalize_path static to service.c -- we do have conn->connectpath
(This used to be commit 06f58096e3785d0e2e0b9f2053d4975e44568e15)
Diffstat (limited to 'source3/smbd/service.c')
-rw-r--r--source3/smbd/service.c25
1 files changed, 25 insertions, 0 deletions
diff --git a/source3/smbd/service.c b/source3/smbd/service.c
index 9efe63a82c..ff6f9d1c1a 100644
--- a/source3/smbd/service.c
+++ b/source3/smbd/service.c
@@ -22,6 +22,31 @@
extern userdom_struct current_user_info;
+BOOL canonicalize_path(connection_struct *conn, pstring path)
+{
+#ifdef REALPATH_TAKES_NULL
+ char *resolved_name = SMB_VFS_REALPATH(conn,path,NULL);
+ if (!resolved_name) {
+ return False;
+ }
+ pstrcpy(path, resolved_name);
+ SAFE_FREE(resolved_name);
+ return True;
+#else
+#ifdef PATH_MAX
+ char resolved_name_buf[PATH_MAX+1];
+#else
+ pstring resolved_name_buf;
+#endif
+ char *resolved_name = SMB_VFS_REALPATH(conn,path,resolved_name_buf);
+ if (!resolved_name) {
+ return False;
+ }
+ pstrcpy(path, resolved_name);
+ return True;
+#endif /* REALPATH_TAKES_NULL */
+}
+
/****************************************************************************
Ensure when setting connectpath it is a canonicalized (no ./ // or ../)
absolute path stating in / and not ending in /.