1
0
mirror of https://github.com/samba-team/samba.git synced 2025-03-20 22:50:26 +03:00

- the 8.3 name in BOTH_DIRECTORY_INFO is supposed to be always unicode

(to match win2003 behaviour)

- added the STR_TERMINATE_ASCII flag from samba4 so we can get the
  string termination right for the case where it is supposed to be
  non-terminated for UCS2 and terminated when ASCII
(This used to be commit 791a4cc7cf84eca77116bca00aeb5f95560f6705)
This commit is contained in:
Andrew Tridgell 2003-06-06 05:15:28 +00:00
parent d155f6ea54
commit 6b943b5b21
3 changed files with 7 additions and 6 deletions

View File

@ -66,6 +66,7 @@ typedef int BOOL;
#define STR_ASCII 4
#define STR_UNICODE 8
#define STR_NOALIGN 16
#define STR_TERMINATE_ASCII 128
/* how long to wait for secondary SMB packets (milli-seconds) */
#define SMB_SECONDARY_WAIT (60*1000)

View File

@ -367,7 +367,7 @@ size_t push_ascii(void *dest, const char *src, size_t dest_len, int flags)
src = tmpbuf;
}
if (flags & STR_TERMINATE)
if (flags & (STR_TERMINATE | STR_TERMINATE_ASCII))
src_len++;
return convert_string(CH_UNIX, CH_DOS, src, src_len, dest, dest_len);

View File

@ -681,14 +681,14 @@ static BOOL get_lanman2_dir_entry(connection_struct *conn,
pstrcpy(mangled_name, fname);
mangle_map(mangled_name,True,True,SNUM(conn));
mangled_name[12] = 0;
len = srvstr_push(outbuf, p+2, mangled_name, 24, STR_UPPER);
len = srvstr_push(outbuf, p+2, mangled_name, 24, STR_UPPER|STR_UNICODE);
SSVAL(p, 0, len);
} else {
SSVAL(p,0,0);
*(p+2) = 0;
}
p += 2 + 24;
len = srvstr_push(outbuf, p, fname, -1, 0);
len = srvstr_push(outbuf, p, fname, -1, STR_TERMINATE_ASCII);
SIVAL(q,0,len);
p += len;
len = PTR_DIFF(p, pdata);
@ -709,7 +709,7 @@ static BOOL get_lanman2_dir_entry(connection_struct *conn,
p += 16;
SIVAL(p,0,nt_extmode); p += 4;
p += 4;
len = srvstr_push(outbuf, p, fname, -1, 0);
len = srvstr_push(outbuf, p, fname, -1, STR_TERMINATE_ASCII);
SIVAL(p, -4, len);
p += len;
len = PTR_DIFF(p, pdata);
@ -732,7 +732,7 @@ static BOOL get_lanman2_dir_entry(connection_struct *conn,
p += 4;
SIVAL(p,4,0); /* ea size */
len = srvstr_push(outbuf, p+8, fname, -1, 0);
len = srvstr_push(outbuf, p+8, fname, -1, STR_TERMINATE_ASCII);
SIVAL(p, 0, len);
p += 8 + len;
@ -748,7 +748,7 @@ static BOOL get_lanman2_dir_entry(connection_struct *conn,
p += 4;
/* this must *not* be null terminated or w2k gets in a loop trying to set an
acl on a dir (tridge) */
len = srvstr_push(outbuf, p, fname, -1, 0);
len = srvstr_push(outbuf, p, fname, -1, STR_TERMINATE_ASCII);
SIVAL(p, -4, len);
p += len;
len = PTR_DIFF(p, pdata);