mirror of
https://github.com/samba-team/samba.git
synced 2025-01-31 01:48:16 +03:00
This backs out my last change, which broke some of the finer points of RPC
coding :-). I'll be more carfull in this area in future. This does not back out the cli_login change, so domain logons still work, but only for english. Andrew Bartlett
This commit is contained in:
parent
7b392f9f68
commit
bd3c2a0cdd
@ -5,7 +5,6 @@
|
||||
* Copyright (C) Andrew Tridgell 1992-1997,
|
||||
* Copyright (C) Luke Kenneth Casson Leighton 1996-1997,
|
||||
* Copyright (C) Paul Ashton 1997.
|
||||
* Copyright (C) Andrew Bartlett 2001.
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
@ -921,59 +920,6 @@ void init_unistr2(UNISTR2 *str, const char *buf, size_t len)
|
||||
rpcstr_push((char *)str->buffer, buf, len, STR_TERMINATE);
|
||||
}
|
||||
|
||||
/*******************************************************************
|
||||
Inits a UNIHDR and UNISTR2 structure at one time.
|
||||
********************************************************************/
|
||||
|
||||
void init_unistr2_and_hdr(UNISTR2 *str, UNIHDR *hdr, const char *buf )
|
||||
{
|
||||
size_t convbuf_len_bytes, len_bytes;
|
||||
int len;
|
||||
|
||||
uint16 *conversion_buffer;
|
||||
|
||||
if (buf == NULL) {
|
||||
str->buffer = NULL;
|
||||
hdr->uni_str_len = 0;
|
||||
hdr->uni_max_len = 0;
|
||||
hdr->buffer = 0;
|
||||
return;
|
||||
}
|
||||
|
||||
convbuf_len_bytes = (sizeof(uint16)*(strlen(buf) + 1));
|
||||
/* Our strings cannot expand from internal to unicode by more
|
||||
than a factor of 2 */
|
||||
|
||||
conversion_buffer = malloc(convbuf_len_bytes);
|
||||
if (conversion_buffer == NULL)
|
||||
smb_panic("init_unistr: malloc fail\n");
|
||||
|
||||
/* Check this */
|
||||
|
||||
len_bytes = rpcstr_push(conversion_buffer, buf, convbuf_len_bytes, STR_TERMINATE);
|
||||
|
||||
len = len_bytes/sizeof(uint16);
|
||||
|
||||
if (len > MAX_UNISTRLEN) {
|
||||
len = MAX_UNISTRLEN;
|
||||
}
|
||||
|
||||
str->buffer = (uint16 *)talloc_zero(get_talloc_ctx(), len*sizeof(uint16));
|
||||
if (str->buffer == NULL)
|
||||
smb_panic("init_unistr: talloc fail\n");
|
||||
|
||||
hdr->uni_str_len = len;
|
||||
hdr->uni_max_len = len;
|
||||
|
||||
hdr->buffer = 1;
|
||||
|
||||
str->uni_str_len = len;
|
||||
str->uni_max_len = len;
|
||||
memcpy(str->buffer, conversion_buffer, len*sizeof(uint16));
|
||||
|
||||
free(conversion_buffer);
|
||||
}
|
||||
|
||||
/*******************************************************************
|
||||
Inits a UNISTR2 structure from a UNISTR
|
||||
********************************************************************/
|
||||
|
@ -5,7 +5,6 @@
|
||||
* Copyright (C) Andrew Tridgell 1992-1997,
|
||||
* Copyright (C) Luke Kenneth Casson Leighton 1996-1997,
|
||||
* Copyright (C) Paul Ashton 1997.
|
||||
* Copyright (C) Andrew Bartlett 2001.
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
@ -984,6 +983,9 @@ void init_id_info2(NET_ID_INFO_2 *id, char *domain_name,
|
||||
unsigned char *lm_chal_resp,
|
||||
unsigned char *nt_chal_resp)
|
||||
{
|
||||
int len_domain_name = strlen(domain_name);
|
||||
int len_user_name = strlen(user_name );
|
||||
int len_wksta_name = strlen(wksta_name );
|
||||
int nt_chal_resp_len = ((nt_chal_resp != NULL) ? 24 : 0);
|
||||
int lm_chal_resp_len = ((lm_chal_resp != NULL) ? 24 : 0);
|
||||
unsigned char lm_owf[24];
|
||||
@ -993,9 +995,14 @@ void init_id_info2(NET_ID_INFO_2 *id, char *domain_name,
|
||||
|
||||
id->ptr_id_info2 = 1;
|
||||
|
||||
init_uni_hdr(&id->hdr_domain_name, len_domain_name);
|
||||
|
||||
id->param_ctrl = param_ctrl;
|
||||
init_logon_id(&id->logon_id, log_id_low, log_id_high);
|
||||
|
||||
init_uni_hdr(&id->hdr_user_name, len_user_name);
|
||||
init_uni_hdr(&id->hdr_wksta_name, len_wksta_name);
|
||||
|
||||
if (nt_chal_resp) {
|
||||
/* oops. can only send what-ever-it-is direct */
|
||||
memcpy(nt_owf, nt_chal_resp, 24);
|
||||
@ -1011,9 +1018,9 @@ void init_id_info2(NET_ID_INFO_2 *id, char *domain_name,
|
||||
init_str_hdr(&id->hdr_nt_chal_resp, 24, nt_chal_resp_len, (nt_chal_resp != NULL) ? 1 : 0);
|
||||
init_str_hdr(&id->hdr_lm_chal_resp, 24, lm_chal_resp_len, (lm_chal_resp != NULL) ? 1 : 0);
|
||||
|
||||
init_unistr2_and_hdr(&id->uni_domain_name, &id->hdr_domain_name, domain_name);
|
||||
init_unistr2_and_hdr(&id->uni_user_name, &id->hdr_user_name, user_name);
|
||||
init_unistr2_and_hdr(&id->uni_wksta_name, &id->hdr_wksta_name, wksta_name);
|
||||
init_unistr2(&id->uni_domain_name, domain_name, len_domain_name);
|
||||
init_unistr2(&id->uni_user_name, user_name, len_user_name);
|
||||
init_unistr2(&id->uni_wksta_name, wksta_name, len_wksta_name);
|
||||
|
||||
init_string2(&id->nt_chal_resp, (char *)nt_chal_resp, nt_chal_resp_len);
|
||||
init_string2(&id->lm_chal_resp, (char *)lm_chal_resp, lm_chal_resp_len);
|
||||
|
Loading…
x
Reference in New Issue
Block a user