]> git.ipfire.org Git - thirdparty/samba.git/commitdiff
This backs out my last change, which broke some of the finer points of RPC
authorAndrew Bartlett <abartlet@samba.org>
Wed, 11 Jul 2001 04:27:03 +0000 (04:27 +0000)
committerAndrew Bartlett <abartlet@samba.org>
Wed, 11 Jul 2001 04:27:03 +0000 (04:27 +0000)
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

source/rpc_parse/parse_misc.c
source/rpc_parse/parse_net.c

index d4754f5e9a2136e6e46b97d038ebb846a1e59bea..857f964e31521aaff6468550e3eca32107f71412 100644 (file)
@@ -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
 ********************************************************************/
index 35890c2f278b6212a85b54c456ad64aadb41fba0..d7253a53fd4c513e13428d486b98c4f0cca10ee2 100644 (file)
@@ -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);