diff options
| -rw-r--r-- | source3/libsmb/clirap.c | 17 | ||||
| -rw-r--r-- | source3/libsmb/clistr.c | 6 | ||||
| -rw-r--r-- | source3/smbd/message.c | 5 | ||||
| -rw-r--r-- | source3/smbd/reply.c | 10 | 
4 files changed, 22 insertions, 16 deletions
diff --git a/source3/libsmb/clirap.c b/source3/libsmb/clirap.c index 5d41af13f9..5050caf073 100644 --- a/source3/libsmb/clirap.c +++ b/source3/libsmb/clirap.c @@ -179,9 +179,12 @@ int cli_RNetShareEnum(struct cli_state *cli, void (*fn)(const char *, uint32, co  					int type = SVAL(p,14);  					int comment_offset = IVAL(p,16) & 0xFFFF;  					char *cmnt = comment_offset?(rdata+comment_offset-converter):""; -					dos_to_unix(sname,True); -					dos_to_unix(cmnt,True); -					fn(sname, type, cmnt, state); +					pstring s1, s2; + +					pstrcpy(s1, dos_to_unix(sname, False)); +					pstrcpy(s2, dos_to_unix(cmnt, False)); + +					fn(s1, type, s2, state);  				}  			} else {  				DEBUG(4,("NetShareEnum res=%d\n", res)); @@ -256,13 +259,15 @@ BOOL cli_NetServerEnum(struct cli_state *cli, char *workgroup, uint32 stype,  				char *sname = p;  				int comment_offset = (IVAL(p,22) & 0xFFFF)-converter;  				char *cmnt = comment_offset?(rdata+comment_offset):""; +				pstring s1, s2; +  				if (comment_offset < 0 || comment_offset > rdrcnt) continue;  				stype = IVAL(p,18) & ~SV_TYPE_LOCAL_LIST_ONLY; -				dos_to_unix(sname, True); -				dos_to_unix(cmnt, True); -				fn(sname, stype, cmnt, state); +				pstrcpy(s1, dos_to_unix(sname, False)); +				pstrcpy(s2, dos_to_unix(cmnt, False)); +				fn(s1, stype, s2, state);  			}  		}  	} diff --git a/source3/libsmb/clistr.c b/source3/libsmb/clistr.c index 0225797538..887b5e84c1 100644 --- a/source3/libsmb/clistr.c +++ b/source3/libsmb/clistr.c @@ -112,7 +112,8 @@ int clistr_pull(struct cli_state *cli, char *dest, const void *src, int dest_len  			memcpy(dest, src, len);  			dest[len] = 0;  		} -		if (flags & STR_CONVERT) dos_to_unix(dest,True); +		if (flags & STR_CONVERT)  +			safe_strcpy(dest,dos_to_unix(dest,False),dest_len);  		return len;  	} @@ -129,7 +130,8 @@ int clistr_pull(struct cli_state *cli, char *dest, const void *src, int dest_len  		*dest++ = 0;  		len = src_len;  	} -	if (flags & STR_CONVERT) dos_to_unix(dest,True); +	if (flags & STR_CONVERT) +		safe_strcpy(dest,dos_to_unix(dest,False),dest_len);  	return len;  } diff --git a/source3/smbd/message.c b/source3/smbd/message.c index 98eb336c0a..a023650c74 100644 --- a/source3/smbd/message.c +++ b/source3/smbd/message.c @@ -61,13 +61,12 @@ static void msg_deliver(void)    }    /* -   * Incoming message is in DOS codepage format. Convert to UNIX in -   * place. +   * Incoming message is in DOS codepage format. Convert to UNIX.     */    if(msgpos > 0) {      msgbuf[msgpos] = '\0'; /* Ensure null terminated. */ -    dos_to_unix(msgbuf,True); +    pstrcpy(msgbuf,dos_to_unix(msgbuf,False));    }    for (i=0;i<msgpos;) { diff --git a/source3/smbd/reply.c b/source3/smbd/reply.c index 2f9898616c..e0b0cea2d3 100644 --- a/source3/smbd/reply.c +++ b/source3/smbd/reply.c @@ -209,9 +209,9 @@ int reply_tcon(connection_struct *conn,  	 * Ensure the user and password names are in UNIX codepage format.  	 */ -	dos_to_unix(user,True); +	pstrcpy(user,dos_to_unix(user,False));  	if (!doencrypt) -    	dos_to_unix(password,True); +    	pstrcpy(password,dos_to_unix(password,False));  	/*  	 * Pass the user through the NT -> unix user mapping @@ -797,8 +797,8 @@ int reply_sesssetup_and_X(connection_struct *conn, char *inbuf,char *outbuf,int         * Ensure the plaintext passwords are in UNIX format.         */        if(!doencrypt) { -        dos_to_unix(smb_apasswd,True); -        dos_to_unix(smb_ntpasswd,True); +        pstrcpy(smb_apasswd,dos_to_unix(smb_apasswd,False)); +        pstrcpy(smb_ntpasswd,dos_to_unix(smb_ntpasswd,False));        }      } else { @@ -808,7 +808,7 @@ int reply_sesssetup_and_X(connection_struct *conn, char *inbuf,char *outbuf,int        /*         * Ensure the plaintext password is in UNIX format.         */ -      dos_to_unix(smb_apasswd,True); +      pstrcpy(smb_apasswd,dos_to_unix(smb_apasswd,False));        /* trim the password */        smb_apasslen = strlen(smb_apasswd);  | 
