diff options
| author | Volker Lendecke <vlendec@samba.org> | 2003-03-10 16:54:57 +0000 | 
|---|---|---|
| committer | Volker Lendecke <vlendec@samba.org> | 2003-03-10 16:54:57 +0000 | 
| commit | 8d563a985b1091b11554fb828700e57c18ac08fb (patch) | |
| tree | fd6422863bcaf9adb3743dd2ae1b0352a1a41e13 | |
| parent | c44e39065c342eaf9efb7a91499791f157433a18 (diff) | |
| download | samba-8d563a985b1091b11554fb828700e57c18ac08fb.tar.gz samba-8d563a985b1091b11554fb828700e57c18ac08fb.tar.bz2 samba-8d563a985b1091b11554fb828700e57c18ac08fb.zip  | |
strcpy_base from HEAD and trivial fix for smbclient -L
Volker
(This used to be commit 54c99ee1fbaf4541fb3fa10a9b764da1367af6d3)
| -rw-r--r-- | source3/include/safe_string.h | 9 | ||||
| -rw-r--r-- | source3/libsmb/clirap.c | 16 | 
2 files changed, 17 insertions, 8 deletions
diff --git a/source3/include/safe_string.h b/source3/include/safe_string.h index 26bf6cdd6f..431dc400aa 100644 --- a/source3/include/safe_string.h +++ b/source3/include/safe_string.h @@ -87,4 +87,13 @@ char * __unsafe_string_function_usage_here__(void);  #define strlower(s) strlower_m(s)  #define strupper(s) strupper_m(s) +/* the addition of the DEVELOPER checks in safe_strcpy means we must + * update a lot of code. To make this a little easier here are some + * functions that provide the lengths with less pain */ +#define pstrcpy_base(dest, src, pstring_base) \ +    safe_strcpy(dest, src, sizeof(pstring)-PTR_DIFF(dest,pstring_base)-1) + +#define push_pstring_base(dest, src, pstring_base) \ +    push_ascii(dest, src, sizeof(pstring)-PTR_DIFF(dest,pstring_base)-1, STR_TERMINATE) +  #endif diff --git a/source3/libsmb/clirap.c b/source3/libsmb/clirap.c index f8f840abaa..b6fbb3880a 100644 --- a/source3/libsmb/clirap.c +++ b/source3/libsmb/clirap.c @@ -85,19 +85,19 @@ BOOL cli_NetWkstaUserLogon(struct cli_state *cli,char *user, char *workstation)  	p = param;  	SSVAL(p,0,132); /* api number */  	p += 2; -	pstrcpy(p,"OOWb54WrLh"); +	pstrcpy_base(p,"OOWb54WrLh",param);  	p = skip_string(p,1); -	pstrcpy(p,"WB21BWDWWDDDDDDDzzzD"); +	pstrcpy_base(p,"WB21BWDWWDDDDDDDzzzD",param);  	p = skip_string(p,1);  	SSVAL(p,0,1);  	p += 2; -	pstrcpy(p,user); +	pstrcpy_base(p,user,param);  	strupper(p);  	p += 21;  	p++;  	p += 15;  	p++;  -	pstrcpy(p, workstation);  +	pstrcpy_base(p, workstation, param);  	strupper(p);  	p += 16;  	SSVAL(p, 0, CLI_BUFFER_SIZE); @@ -145,9 +145,9 @@ int cli_RNetShareEnum(struct cli_state *cli, void (*fn)(const char *, uint32, co  	p = param;  	SSVAL(p,0,0); /* api number */  	p += 2; -	pstrcpy(p,"WrLeh"); +	pstrcpy_base(p,"WrLeh",param);  	p = skip_string(p,1); -	pstrcpy(p,"B13BWz"); +	pstrcpy_base(p,"B13BWz",param);  	p = skip_string(p,1);  	SSVAL(p,0,1);  	/* @@ -221,10 +221,10 @@ BOOL cli_NetServerEnum(struct cli_state *cli, char *workgroup, uint32 stype,  	p = param;  	SSVAL(p,0,0x68); /* api number */  	p += 2; -	pstrcpy(p,"WrLehDz"); +	pstrcpy_base(p,"WrLehDz",param);  	p = skip_string(p,1); -	pstrcpy(p,"B16BBDz"); +	pstrcpy_base(p,"B16BBDz",param);  	p = skip_string(p,1);  	SSVAL(p,0,uLevel);  | 
