summaryrefslogtreecommitdiff
path: root/source3
diff options
context:
space:
mode:
authorJeremy Allison <jra@samba.org>2004-03-09 23:26:58 +0000
committerJeremy Allison <jra@samba.org>2004-03-09 23:26:58 +0000
commit46a718189c261b1c4969faf1feae79b9feb6f1f0 (patch)
tree503718cc8491198f1def0bbf3ad0dd73f9ba4bc9 /source3
parentaddfc95df264a4af55516620d79c995e8279793d (diff)
downloadsamba-46a718189c261b1c4969faf1feae79b9feb6f1f0.tar.gz
samba-46a718189c261b1c4969faf1feae79b9feb6f1f0.tar.bz2
samba-46a718189c261b1c4969faf1feae79b9feb6f1f0.zip
Fix dfs referrals - don't use check_path_syntax. Also use mb char calls in
dfs code. Jeremy. (This used to be commit 42175b4518764e484d33d9fbfba3b78ba4102ead)
Diffstat (limited to 'source3')
-rw-r--r--source3/msdfs/msdfs.c19
-rw-r--r--source3/smbd/trans2.c7
2 files changed, 10 insertions, 16 deletions
diff --git a/source3/msdfs/msdfs.c b/source3/msdfs/msdfs.c
index cd83756056..081ce809cf 100644
--- a/source3/msdfs/msdfs.c
+++ b/source3/msdfs/msdfs.c
@@ -45,7 +45,7 @@ static BOOL parse_dfs_path(char* pathname, struct dfs_path* pdp)
/* now tokenize */
/* parse out hostname */
- p = strchr(temp,'\\');
+ p = strchr_m(temp,'\\');
if(p == NULL)
return False;
*p = '\0';
@@ -54,7 +54,7 @@ static BOOL parse_dfs_path(char* pathname, struct dfs_path* pdp)
/* parse out servicename */
temp = p+1;
- p = strchr(temp,'\\');
+ p = strchr_m(temp,'\\');
if(p == NULL) {
pstrcpy(pdp->servicename,temp);
pdp->reqpath[0] = '\0';
@@ -67,9 +67,8 @@ static BOOL parse_dfs_path(char* pathname, struct dfs_path* pdp)
/* rest is reqpath */
pstrcpy(pdp->reqpath, p+1);
p = pdp->reqpath;
- while (*p) {
- if (*p == '\\') *p = '/';
- p++;
+ while ((p = strchr_m(p, '\\'))!=NULL) {
+ *p++ = '/';
}
DEBUG(10,("rest of the path: %s\n",pdp->reqpath));
@@ -148,7 +147,7 @@ static BOOL parse_symlink(char* buf,struct referral** preflist,
for(i=0;i<count;i++) {
/* replace / in the alternate path by a \ */
- char* p = strchr(alt_path[i],'/');
+ char* p = strchr_m(alt_path[i],'/');
if(p)
*p = '\\';
@@ -270,7 +269,7 @@ static BOOL resolve_dfs_path(pstring dfspath, struct dfs_path* dp,
/* redirect if any component in the path is a link */
pstrcpy(reqpath, dp->reqpath);
- p = strrchr(reqpath, '/');
+ p = strrchr_m(reqpath, '/');
while (p) {
*p = '\0';
pstrcpy(localpath, reqpath);
@@ -288,7 +287,7 @@ static BOOL resolve_dfs_path(pstring dfspath, struct dfs_path* dp,
pstrcpy(buf, dfspath);
trim_char(buf, '\0', '\\');
for (; consumed_level; consumed_level--) {
- q = strrchr(buf, '\\');
+ q = strrchr_m(buf, '\\');
if (q)
*q = 0;
}
@@ -298,7 +297,7 @@ static BOOL resolve_dfs_path(pstring dfspath, struct dfs_path* dp,
return True;
}
- p = strrchr(reqpath, '/');
+ p = strrchr_m(reqpath, '/');
consumed_level++;
}
@@ -526,7 +525,7 @@ static int setup_ver2_dfs_referral(char* pathname, char** ppdata,
offset = 8;
/* add the referral elements */
for(i=0;i<junction->referral_count;i++) {
- struct referral* ref = &(junction->referral_list[i]);
+ struct referral* ref = &junction->referral_list[i];
int unilen;
SSVAL(pdata,offset,2); /* version 2 */
diff --git a/source3/smbd/trans2.c b/source3/smbd/trans2.c
index 38fed4beae..19269cbc6c 100644
--- a/source3/smbd/trans2.c
+++ b/source3/smbd/trans2.c
@@ -3390,7 +3390,6 @@ static int call_trans2getdfsreferral(connection_struct *conn, char* inbuf,
pstring pathname;
int reply_size = 0;
int max_referral_level;
- NTSTATUS status = NT_STATUS_OK;
DEBUG(10,("call_trans2getdfsreferral\n"));
@@ -3402,11 +3401,7 @@ static int call_trans2getdfsreferral(connection_struct *conn, char* inbuf,
if(!lp_host_msdfs())
return ERROR_DOS(ERRDOS,ERRbadfunc);
- srvstr_get_path(inbuf, pathname, &params[2], sizeof(pathname), -1, STR_TERMINATE, &status);
- if (!NT_STATUS_IS_OK(status)) {
- return ERROR_NT(status);
- }
-
+ srvstr_pull(inbuf, pathname, &params[2], sizeof(pathname), -1, STR_TERMINATE);
if((reply_size = setup_dfs_referral(conn, pathname,max_referral_level,ppdata)) < 0)
return UNIXERROR(ERRDOS,ERRbadfile);