From 400bb4bfab01a6c262b15658dee5c0d011d0e883 Mon Sep 17 00:00:00 2001
From: Andrew Bartlett <abartlet@samba.org>
Date: Sun, 16 Mar 2003 13:21:12 +0000
Subject:  - Make ReadDirName return a const char*.

 - Consequential changes from that

 - mark our fstring/pstring assumptions in function prototypes

Andrew Bartlett
(This used to be commit fe2bc64bc439b27387b8f326b0f4f3bfcc3d04a1)
---
 source3/smbd/chgpasswd.c    |  2 +-
 source3/smbd/mangle.c       |  2 +-
 source3/smbd/mangle_hash2.c |  2 +-
 source3/smbd/mangle_map.c   |  2 +-
 source3/smbd/trans2.c       | 53 +++++++++++++++++++++++++--------------------
 5 files changed, 34 insertions(+), 27 deletions(-)

(limited to 'source3/smbd')

diff --git a/source3/smbd/chgpasswd.c b/source3/smbd/chgpasswd.c
index 401ab131ad..31c4fa7cc9 100644
--- a/source3/smbd/chgpasswd.c
+++ b/source3/smbd/chgpasswd.c
@@ -64,7 +64,7 @@ static int findpty(char **slave)
 	int master;
 	static fstring line;
 	DIR *dirp;
-	char *dpname;
+	const char *dpname;
 
 #if defined(HAVE_GRANTPT)
 	/* Try to open /dev/ptmx. If that fails, fall through to old method. */
diff --git a/source3/smbd/mangle.c b/source3/smbd/mangle.c
index f5c703a5bf..c5d7582c03 100644
--- a/source3/smbd/mangle.c
+++ b/source3/smbd/mangle.c
@@ -107,7 +107,7 @@ BOOL mangle_check_cache(char *s)
    map a long filename to a 8.3 name. 
  */
 
-void mangle_map(char *OutName, BOOL need83, BOOL cache83, int snum)
+void mangle_map(pstring OutName, BOOL need83, BOOL cache83, int snum)
 {
 	/* name mangling can be disabled for speed, in which case
 	   we just truncate the string */
diff --git a/source3/smbd/mangle_hash2.c b/source3/smbd/mangle_hash2.c
index eda509214d..cdce28e1bd 100644
--- a/source3/smbd/mangle_hash2.c
+++ b/source3/smbd/mangle_hash2.c
@@ -484,7 +484,7 @@ static BOOL is_legal_name(const char *name)
 
   the name parameter must be able to hold 13 bytes
 */
-static void name_map(char *name, BOOL need83, BOOL cache83)
+static void name_map(fstring name, BOOL need83, BOOL cache83)
 {
 	char *dot_p;
 	char lead_chars[7];
diff --git a/source3/smbd/mangle_map.c b/source3/smbd/mangle_map.c
index 5ae3ebd174..9e798fd41b 100644
--- a/source3/smbd/mangle_map.c
+++ b/source3/smbd/mangle_map.c
@@ -201,7 +201,7 @@ static void mangled_map(char *s, const char *MangledMap)
   front end routine to the mangled map code 
   personally I think that the whole idea of "mangled map" is completely bogus
 */
-void mangle_map_filename(char *fname, int snum)
+void mangle_map_filename(fstring fname, int snum)
 {
 	char *map;
 
diff --git a/source3/smbd/trans2.c b/source3/smbd/trans2.c
index bea09e9e37..4129852f77 100644
--- a/source3/smbd/trans2.c
+++ b/source3/smbd/trans2.c
@@ -460,7 +460,7 @@ static BOOL get_lanman2_dir_entry(connection_struct *conn,
 				 BOOL *out_of_space, BOOL *got_exact_match,
 				 int *last_name_off)
 {
-	char *dname;
+	const char *dname;
 	BOOL found = False;
 	SMB_STRUCT_STAT sbuf;
 	pstring mask;
@@ -1173,7 +1173,8 @@ resume_key = %d resume name = %s continue=%d level = %d\n",
 		 */
 
 		int current_pos, start_pos;
-		char *dname = NULL;
+		const char *dname = NULL;
+		pstring dname_pstring;
 		void *dirptr = conn->dirptr;
 		start_pos = TellDir(dirptr);
 		for(current_pos = start_pos; current_pos >= 0; current_pos--) {
@@ -1181,21 +1182,24 @@ resume_key = %d resume name = %s continue=%d level = %d\n",
 
 			SeekDir(dirptr, current_pos);
 			dname = ReadDirName(dirptr);
+			if (dname) {
+				/*
+				 * Remember, mangle_map is called by
+				 * get_lanman2_dir_entry(), so the resume name
+				 * could be mangled. Ensure we do the same
+				 * here.
+				 */
+				
+				/* make sure we get a copy that mangle_map can modify */
 
-			/*
-			 * Remember, mangle_map is called by
-			 * get_lanman2_dir_entry(), so the resume name
-			 * could be mangled. Ensure we do the same
-			 * here.
-			 */
-
-			if(dname != NULL)
-				mangle_map( dname, False, True, SNUM(conn));
-
-			if(dname && strcsequal( resume_name, dname)) {
-				SeekDir(dirptr, current_pos+1);
-				DEBUG(7,("call_trans2findnext: got match at pos %d\n", current_pos+1 ));
-				break;
+				pstrcpy(dname_pstring, dname);
+				mangle_map( dname_pstring, False, True, SNUM(conn));
+				
+				if(strcsequal( resume_name, dname_pstring)) {
+					SeekDir(dirptr, current_pos+1);
+					DEBUG(7,("call_trans2findnext: got match at pos %d\n", current_pos+1 ));
+					break;
+				}
 			}
 		}
 
@@ -1215,13 +1219,17 @@ resume_key = %d resume name = %s continue=%d level = %d\n",
 				 * here.
 				 */
 
-				if(dname != NULL)
-					mangle_map( dname, False, True, SNUM(conn));
+				if(dname) {
+					/* make sure we get a copy that mangle_map can modify */
+					
+					pstrcpy(dname_pstring, dname);
+					mangle_map(dname_pstring, False, True, SNUM(conn));
 
-				if(dname && strcsequal( resume_name, dname)) {
-					SeekDir(dirptr, current_pos+1);
-					DEBUG(7,("call_trans2findnext: got match at pos %d\n", current_pos+1 ));
-					break;
+					if(strcsequal( resume_name, dname_pstring)) {
+						SeekDir(dirptr, current_pos+1);
+						DEBUG(7,("call_trans2findnext: got match at pos %d\n", current_pos+1 ));
+						break;
+					}
 				}
 			} /* end for */
 		} /* end if current_pos */
@@ -1269,7 +1277,6 @@ resume_key = %d resume name = %s continue=%d level = %d\n",
 		dptr_close(&dptr_num); /* This frees up the saved mask */
 	}
 
-
 	/* Set up the return parameter block */
 	SSVAL(params,0,numentries);
 	SSVAL(params,2,finished);
-- 
cgit