The Samba-Bugzilla – Attachment 1746 Details for
Bug 3330
Solaris windbind problems.
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Requests
|
Help
|
New Account
|
Log In
[x]
|
Forgot Password
Login:
[x]
[patch]
always read the username as a little-endian, non-null terminated UCS2-string
diff (text/plain), 2.83 KB, created by
Guenther Deschner
on 2006-02-20 14:54:21 UTC
(
hide
)
Description:
always read the username as a little-endian, non-null terminated UCS2-string
Filename:
MIME Type:
Creator:
Guenther Deschner
Created:
2006-02-20 14:54:21 UTC
Size:
2.83 KB
patch
obsolete
>Index: include/authdata.h >=================================================================== >--- include/authdata.h (revision 13567) >+++ include/authdata.h (working copy) >@@ -42,7 +42,7 @@ > typedef struct pac_logon_name { > NTTIME logon_time; > uint16 len; >- uint16 *username; /* might not be null terminated, so not UNISTR */ >+ fstring username; > } PAC_LOGON_NAME; > > typedef struct pac_signature_data { >Index: libads/authdata.c >=================================================================== >--- libads/authdata.c (revision 13567) >+++ libads/authdata.c (working copy) >@@ -42,16 +42,7 @@ > if (!prs_uint16("len", ps, depth, &logon_name->len)) > return False; > >- if (UNMARSHALLING(ps) && logon_name->len) { >- logon_name->username = PRS_ALLOC_MEM(ps, uint16, logon_name->len); >- if (!logon_name->username) { >- DEBUG(3, ("No memory available\n")); >- return False; >- } >- } >- >- if (!prs_uint16s(True, "name", ps, depth, logon_name->username, >- (logon_name->len / sizeof(uint16)))) >+ if (!prs_string_len("name", ps, depth, logon_name->username, logon_name->len)) > return False; > > return True; >@@ -891,8 +882,9 @@ > nt_status = NT_STATUS_INVALID_PARAMETER; > goto out; > } >- rpcstr_pull(username, logon_name->username, sizeof(username), -1, STR_TERMINATE); > >+ rpcstr_pull(username, logon_name->username, sizeof(username), logon_name->len, 0); >+ > ret = smb_krb5_parse_name_norealm(context, username, &client_principal_pac); > if (ret) { > DEBUG(2,("decode_pac_data: Could not parse name from incoming PAC: [%s]: %s\n", >Index: rpc_parse/parse_prs.c >=================================================================== >--- rpc_parse/parse_prs.c (revision 13567) >+++ rpc_parse/parse_prs.c (working copy) >@@ -1333,6 +1333,49 @@ > } > > /******************************************************************* >+ Stream a null-terminated string of fixed len. >+ ********************************************************************/ >+ >+BOOL prs_string_len(const char *name, prs_struct *ps, int depth, char *str, int len) >+{ >+ char *q; >+ int i; >+ BOOL charmode = True; >+ >+ q = prs_mem_get(ps, len+1); >+ if (q == NULL) >+ return False; >+ >+ for(i = 0; i < len; i++) { >+ if (UNMARSHALLING(ps)) >+ str[i] = q[i]; >+ else >+ q[i] = str[i]; >+ } >+ >+ /* The terminating null. */ >+ str[i] = '\0'; >+ >+ if (MARSHALLING(ps)) { >+ q[i] = '\0'; >+ } >+ >+ ps->data_offset += len+1; >+ >+ DEBUG(5,("%s%04x %s: ", tab_depth(depth), ps->data_offset, name)); >+ if (charmode) { >+ print_asc(5, (unsigned char*)str, len); >+ } else { >+ for (i = 0; i < len; i++) >+ DEBUG(5,("%04x ", str[i])); >+ } >+ DEBUG(5,("\n")); >+ >+ return True; >+} >+ >+ >+/******************************************************************* > prs_uint16 wrapper. Call this and it sets up a pointer to where the > uint16 should be stored, or gets the size if reading. > ********************************************************************/
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Raw
Actions:
View
Attachments on
bug 3330
:
1617
|
1627
| 1746