summaryrefslogtreecommitdiff
path: root/source3
diff options
context:
space:
mode:
authorGerald Carter <jerry@samba.org>2003-04-11 23:48:24 +0000
committerGerald Carter <jerry@samba.org>2003-04-11 23:48:24 +0000
commite1ea87ff03f7029f309a119e6be726a11000ab34 (patch)
treeffe7b852b8968ccfe3b6bcae4a4cc5f3dd530b8e /source3
parent14e03aed2970d75cba216741d74363fc353955d2 (diff)
downloadsamba-e1ea87ff03f7029f309a119e6be726a11000ab34.tar.gz
samba-e1ea87ff03f7029f309a119e6be726a11000ab34.tar.bz2
samba-e1ea87ff03f7029f309a119e6be726a11000ab34.zip
* We must return 0x2 as the majorversion for nt4 to upload drivers
* fix bug found by clobber_region() (This used to be commit b2e29c7bd45f8f33d9ed58fe75bbf5ffc78350f5)
Diffstat (limited to 'source3')
-rw-r--r--source3/rpc_server/srv_spoolss_nt.c12
-rw-r--r--source3/smbd/reply.c25
2 files changed, 26 insertions, 11 deletions
diff --git a/source3/rpc_server/srv_spoolss_nt.c b/source3/rpc_server/srv_spoolss_nt.c
index 90090efde8..b0529fea81 100644
--- a/source3/rpc_server/srv_spoolss_nt.c
+++ b/source3/rpc_server/srv_spoolss_nt.c
@@ -2307,7 +2307,17 @@ static WERROR getprinterdata_printer_server(TALLOC_CTX *ctx, fstring value, uint
*type = 0x4;
if((*data = (uint8 *)talloc(ctx, 4*sizeof(uint8) )) == NULL)
return WERR_NOMEM;
- SIVAL(*data, 0, 3);
+
+ /* Windows NT 4.0 seems to not allow uploading of drivers
+ to a server that reports 0x3 as the MajorVersion.
+ need to investigate more how Win2k gets around this .
+ -- jerry */
+
+ if ( RA_WINNT == get_remote_arch() )
+ SIVAL(*data, 0, 2);
+ else
+ SIVAL(*data, 0, 3);
+
*needed = 0x4;
return WERR_OK;
}
diff --git a/source3/smbd/reply.c b/source3/smbd/reply.c
index c4147f78b1..0ccb4d0e9d 100644
--- a/source3/smbd/reply.c
+++ b/source3/smbd/reply.c
@@ -3045,20 +3045,22 @@ int reply_rmdir(connection_struct *conn, char *inbuf,char *outbuf, int dum_size,
Resolve wildcards in a filename rename.
********************************************************************/
-static BOOL resolve_wildcards(char *name1,char *name2)
+static BOOL resolve_wildcards(const char *name1, char *name2)
{
fstring root1,root2;
fstring ext1,ext2;
- char *p,*p2;
+ char *p,*p2, *pname1, *pname2;
+ int available_space;
+
- name1 = strrchr_m(name1,'/');
- name2 = strrchr_m(name2,'/');
+ pname1 = strrchr_m(name1,'/');
+ pname2 = strrchr_m(name2,'/');
- if (!name1 || !name2)
+ if (!pname1 || !pname2)
return(False);
- fstrcpy(root1,name1);
- fstrcpy(root2,name2);
+ fstrcpy(root1,pname1);
+ fstrcpy(root2,pname2);
p = strrchr_m(root1,'.');
if (p) {
*p = 0;
@@ -3100,10 +3102,13 @@ static BOOL resolve_wildcards(char *name1,char *name2)
p++;
}
- pstrcpy(name2,root2);
+ available_space = sizeof(pstring) - PTR_DIFF(pname2, name2);
+
+ StrnCpy(pname2, root2, available_space-1);
+ available_space -= strlen(root2);
if (ext2[0]) {
- pstrcat(name2,".");
- pstrcat(name2,ext2);
+ strncat(pname2, ".", available_space-1);
+ strncat(pname2, ext2, available_space-2);
}
return(True);