summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-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 424d7909d1..4432b06fc7 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 0b710d6401..1c7e23a20f 100644
--- a/source3/smbd/reply.c
+++ b/source3/smbd/reply.c
@@ -3042,20 +3042,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;
@@ -3097,10 +3099,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);