samba-cvs.cvs
[Top] [All Lists]

[SCM] Samba Shared Repository - branch v3-3-test updated - release-3-2-0

Subject: [SCM] Samba Shared Repository - branch v3-3-test updated - release-3-2-0pre2-3442-gff9bcd5
From: gd@xxxxxxxxx (Günther Deschner)
Date: Wed, 30 Jul 2008 09:41:28 -0500 (CDT)
The branch, v3-3-test has been updated
       via  ff9bcd57738aa04c5e18e0e21dd0e788127317c4 (commit)
       via  c3e4c7cb5f2728a8219789aeb2344bff368713d5 (commit)
       via  244ad49e6a993a0e3c56c5a19d38918be9deca3b (commit)
       via  6c8ee639ecc789ea9052e999b6e998ac53ac521a (commit)
      from  8b3149b4a663f59b504c1458cd7ecafe0c0e0322 (commit)

http://gitweb.samba.org/?p=samba.git;a=shortlog;h=v3-3-test


- Log -----------------------------------------------------------------
commit ff9bcd57738aa04c5e18e0e21dd0e788127317c4
Author: Günther Deschner <gd@xxxxxxxxx>
Date:   Fri Jul 18 20:12:45 2008 +0200

    netapi: implement NetUserSetInfo_r() for at least level 1007.
    
    Guenther

commit c3e4c7cb5f2728a8219789aeb2344bff368713d5
Author: Günther Deschner <gd@xxxxxxxxx>
Date:   Fri Jul 18 20:12:13 2008 +0200

    netapi: add convert_USER_INFO_X_to_samr_user_info21 fn and use it 
NetUserAdd.
    
    Guenther

commit 244ad49e6a993a0e3c56c5a19d38918be9deca3b
Author: Günther Deschner <gd@xxxxxxxxx>
Date:   Fri Jul 18 19:40:26 2008 +0200

    re-run make idl.
    
    Guenther

commit 6c8ee639ecc789ea9052e999b6e998ac53ac521a
Author: Günther Deschner <gd@xxxxxxxxx>
Date:   Fri Jul 18 19:40:13 2008 +0200

    netapi: add USER_INFO_X to IDL.
    
    Guenther

-----------------------------------------------------------------------

Summary of changes:
 source/lib/netapi/user.c              |  299 +++++++++++++++++++++++++++------
 source/librpc/gen_ndr/libnetapi.h     |   27 +++
 source/librpc/gen_ndr/ndr_libnetapi.c |  120 +++++++++++++
 source/librpc/gen_ndr/ndr_libnetapi.h |    3 +
 source/librpc/idl/libnetapi.idl       |   27 +++
 5 files changed, 426 insertions(+), 50 deletions(-)


Changeset truncated at 500 lines:

diff --git a/source/lib/netapi/user.c b/source/lib/netapi/user.c
index f896dde..fe30b14 100644
--- a/source/lib/netapi/user.c
+++ b/source/lib/netapi/user.c
@@ -27,9 +27,8 @@
 /****************************************************************
 ****************************************************************/
 
-static void convert_USER_INFO_1_to_samr_user_info25(struct USER_INFO_1 *info1,
-                                                   DATA_BLOB *user_session_key,
-                                                   struct samr_UserInfo25 
*info25)
+static void convert_USER_INFO_X_to_samr_user_info21(struct USER_INFO_X *infoX,
+                                                   struct samr_UserInfo21 
*info21)
 {
        uint32_t fields_present = SAMR_FIELD_ACCT_FLAGS;
        struct samr_LogonHours zero_logon_hours;
@@ -37,41 +36,41 @@ static void convert_USER_INFO_1_to_samr_user_info25(struct 
USER_INFO_1 *info1,
        uint32_t acct_flags = 0;
        NTTIME password_age;
 
-       ZERO_STRUCTP(info25);
+       ZERO_STRUCTP(info21);
        ZERO_STRUCT(zero_logon_hours);
        ZERO_STRUCT(zero_parameters);
 
-       if (info1->usri1_name) {
+       if (infoX->usriX_name) {
                fields_present |= SAMR_FIELD_FULL_NAME;
        }
-       if (info1->usri1_password) {
+       if (infoX->usriX_password) {
                fields_present |= SAMR_FIELD_PASSWORD;
        }
-       if (info1->usri1_flags) {
+       if (infoX->usriX_flags) {
                fields_present |= SAMR_FIELD_ACCT_FLAGS;
        }
-       if (info1->usri1_name) {
+       if (infoX->usriX_name) {
                fields_present |= SAMR_FIELD_FULL_NAME;
        }
-       if (info1->usri1_home_dir) {
+       if (infoX->usriX_home_dir) {
                fields_present |= SAMR_FIELD_HOME_DIRECTORY;
        }
-       if (info1->usri1_script_path) {
+       if (infoX->usriX_script_path) {
                fields_present |= SAMR_FIELD_LOGON_SCRIPT;
        }
-       if (info1->usri1_comment) {
+       if (infoX->usriX_comment) {
                fields_present |= SAMR_FIELD_DESCRIPTION;
        }
-       if (info1->usri1_password_age) {
+       if (infoX->usriX_password_age) {
                fields_present |= SAMR_FIELD_FORCE_PWD_CHANGE;
        }
 
-       acct_flags |= info1->usri1_flags | ACB_NORMAL;
+       acct_flags |= infoX->usriX_flags | ACB_NORMAL;
 
-       unix_to_nt_time_abs(&password_age, info1->usri1_password_age);
+       unix_to_nt_time_abs(&password_age, infoX->usriX_password_age);
 
-       /* TODO: info1->usri1_priv */
-       init_samr_user_info21(&info25->info,
+       /* TODO: infoX->usriX_priv */
+       init_samr_user_info21(info21,
                              0,
                              0,
                              0,
@@ -79,12 +78,12 @@ static void convert_USER_INFO_1_to_samr_user_info25(struct 
USER_INFO_1 *info1,
                              0,
                              password_age,
                              NULL,
-                             info1->usri1_name,
-                             info1->usri1_home_dir,
+                             infoX->usriX_name,
+                             infoX->usriX_home_dir,
                              NULL,
-                             info1->usri1_script_path,
+                             infoX->usriX_script_path,
                              NULL,
-                             info1->usri1_comment,
+                             infoX->usriX_comment,
                              NULL,
                              NULL,
                              &zero_parameters,
@@ -100,29 +99,80 @@ static void convert_USER_INFO_1_to_samr_user_info25(struct 
USER_INFO_1 *info1,
                              0,
                              0,
                              0);
+}
 
-       if (info1->usri1_password) {
-               uchar pwbuf[532];
-               struct MD5Context ctx;
-               uint8_t confounder[16];
-               DATA_BLOB confounded_session_key = data_blob(NULL, 16);
-
-               encode_pw_buffer(pwbuf, info1->usri1_password, STR_UNICODE);
+/****************************************************************
+****************************************************************/
 
-               generate_random_buffer((uint8_t *)confounder, 16);
+static NTSTATUS construct_USER_INFO_X(uint32_t level,
+                                     uint8_t *buffer,
+                                     struct USER_INFO_X *uX)
+{
+       struct USER_INFO_0 *u0 = NULL;
+       struct USER_INFO_1 *u1 = NULL;
+       struct USER_INFO_2 *u2 = NULL;
+       struct USER_INFO_1007 *u1007 = NULL;
 
-               MD5Init(&ctx);
-               MD5Update(&ctx, confounder, 16);
-               MD5Update(&ctx, user_session_key->data,
-                               user_session_key->length);
-               MD5Final(confounded_session_key.data, &ctx);
+       if (!buffer || !uX) {
+               return NT_STATUS_INVALID_PARAMETER;
+       }
 
-               SamOEMhashBlob(pwbuf, 516, &confounded_session_key);
-               memcpy(&pwbuf[516], confounder, 16);
+       ZERO_STRUCTP(uX);
 
-               memcpy(info25->password.data, pwbuf, sizeof(pwbuf));
-               data_blob_free(&confounded_session_key);
+       switch (level) {
+               case 0:
+                       u0 = (struct USER_INFO_0 *)buffer;
+                       uX->usriX_name          = u0->usri0_name;
+                       break;
+               case 1:
+                       u1 = (struct USER_INFO_1 *)buffer;
+                       uX->usriX_name          = u1->usri1_name;
+                       uX->usriX_password      = u1->usri1_password;
+                       uX->usriX_password_age  = u1->usri1_password_age;
+                       uX->usriX_priv          = u1->usri1_priv;
+                       uX->usriX_home_dir      = u1->usri1_home_dir;
+                       uX->usriX_comment       = u1->usri1_comment;
+                       uX->usriX_flags         = u1->usri1_flags;
+                       uX->usriX_script_path   = u1->usri1_script_path;
+                       break;
+               case 2:
+                       u2 = (struct USER_INFO_2 *)buffer;
+                       uX->usriX_name          = u2->usri2_name;
+                       uX->usriX_password      = u2->usri2_password;
+                       uX->usriX_password_age  = u2->usri2_password_age;
+                       uX->usriX_priv          = u2->usri2_priv;
+                       uX->usriX_home_dir      = u2->usri2_home_dir;
+                       uX->usriX_comment       = u2->usri2_comment;
+                       uX->usriX_flags         = u2->usri2_flags;
+                       uX->usriX_script_path   = u2->usri2_script_path;
+                       uX->usriX_auth_flags    = u2->usri2_auth_flags;
+                       uX->usriX_full_name     = u2->usri2_full_name;
+                       uX->usriX_usr_comment   = u2->usri2_usr_comment;
+                       uX->usriX_parms         = u2->usri2_parms;
+                       uX->usriX_workstations  = u2->usri2_workstations;
+                       uX->usriX_last_logon    = u2->usri2_last_logon;
+                       uX->usriX_last_logoff   = u2->usri2_last_logoff;
+                       uX->usriX_acct_expires  = u2->usri2_acct_expires;
+                       uX->usriX_max_storage   = u2->usri2_max_storage;
+                       uX->usriX_units_per_week= u2->usri2_units_per_week;
+                       uX->usriX_logon_hours   = u2->usri2_logon_hours;
+                       uX->usriX_bad_pw_count  = u2->usri2_bad_pw_count;
+                       uX->usriX_num_logons    = u2->usri2_num_logons;
+                       uX->usriX_logon_server  = u2->usri2_logon_server;
+                       uX->usriX_country_code  = u2->usri2_country_code;
+                       uX->usriX_code_page     = u2->usri2_code_page;
+                       break;
+               case 1007:
+                       u1007 = (struct USER_INFO_1007 *)buffer;
+                       uX->usriX_comment       = u1007->usri1007_comment;
+                       break;
+               case 3:
+               case 4:
+               default:
+                       return NT_STATUS_INVALID_INFO_CLASS;
        }
+
+       return NT_STATUS_OK;
 }
 
 /****************************************************************
@@ -138,12 +188,12 @@ WERROR NetUserAdd_r(struct libnetapi_ctx *ctx,
        POLICY_HND connect_handle, domain_handle, user_handle;
        struct lsa_String lsa_account_name;
        struct dom_sid2 *domain_sid = NULL;
-       struct samr_UserInfo25 info25;
+       struct samr_UserInfo21 info21;
        union samr_UserInfo *user_info = NULL;
        struct samr_PwInfo pw_info;
        uint32_t access_granted = 0;
        uint32_t rid = 0;
-       struct USER_INFO_1 *info1;
+       struct USER_INFO_X uX;
 
        ZERO_STRUCT(connect_handle);
        ZERO_STRUCT(domain_handle);
@@ -155,7 +205,6 @@ WERROR NetUserAdd_r(struct libnetapi_ctx *ctx,
 
        switch (r->in.level) {
                case 1:
-                       info1 = (struct USER_INFO_1 *)r->in.buffer;
                        break;
                case 2:
                case 3:
@@ -176,6 +225,12 @@ WERROR NetUserAdd_r(struct libnetapi_ctx *ctx,
                goto done;
        }
 
+       status = construct_USER_INFO_X(r->in.level, r->in.buffer, &uX);
+       if (!NT_STATUS_IS_OK(status)) {
+               werr = ntstatus_to_werror(status);
+               goto done;
+       }
+
        werr = libnetapi_samr_open_domain(ctx, pipe_cli,
                                          SAMR_ACCESS_ENUM_DOMAINS |
                                          SAMR_ACCESS_OPEN_DOMAIN,
@@ -189,7 +244,7 @@ WERROR NetUserAdd_r(struct libnetapi_ctx *ctx,
                goto done;
        }
 
-       init_lsa_String(&lsa_account_name, info1->usri1_name);
+       init_lsa_String(&lsa_account_name, uX.usriX_name);
 
        status = rpccli_samr_CreateUser2(pipe_cli, ctx,
                                         &domain_handle,
@@ -230,14 +285,36 @@ WERROR NetUserAdd_r(struct libnetapi_ctx *ctx,
                goto done;
        }
 
+       convert_USER_INFO_X_to_samr_user_info21(&uX,
+                                               &info21);
+
        ZERO_STRUCTP(user_info);
 
-       convert_USER_INFO_1_to_samr_user_info25(info1,
-                                               &cli->user_session_key,
-                                               &info25);
+       if (uX.usriX_password) {
+
+               uchar pwbuf[532];
+               struct MD5Context md5_ctx;
+               uint8_t confounder[16];
+               DATA_BLOB confounded_session_key = data_blob(NULL, 16);
+
+               encode_pw_buffer(pwbuf, uX.usriX_password, STR_UNICODE);
+
+               generate_random_buffer((uint8_t *)confounder, 16);
+
+               MD5Init(&md5_ctx);
+               MD5Update(&md5_ctx, confounder, 16);
+               MD5Update(&md5_ctx, cli->user_session_key.data,
+                               cli->user_session_key.length);
+               MD5Final(confounded_session_key.data, &md5_ctx);
+
+               SamOEMhashBlob(pwbuf, 516, &confounded_session_key);
+               memcpy(&pwbuf[516], confounder, 16);
+
+               memcpy(user_info->info25.password.data, pwbuf, sizeof(pwbuf));
+               data_blob_free(&confounded_session_key);
+
+               user_info->info25.info = info21;
 
-       if (info1->usri1_password) {
-               user_info->info25 = info25;
                status = rpccli_samr_SetUserInfo2(pipe_cli, ctx,
                                                  &user_handle,
                                                  25,
@@ -245,10 +322,10 @@ WERROR NetUserAdd_r(struct libnetapi_ctx *ctx,
 
                if (NT_STATUS_EQUAL(status, 
NT_STATUS(DCERPC_FAULT_INVALID_TAG))) {
 
-                       user_info->info23.info = info25.info;
+                       user_info->info23.info = info21;
 
                        encode_pw_buffer(user_info->info23.password.data,
-                                        info1->usri1_password, STR_UNICODE);
+                                        uX.usriX_password, STR_UNICODE);
                        SamOEMhashBlob(user_info->info23.password.data, 516,
                                       &cli->user_session_key);
 
@@ -258,7 +335,7 @@ WERROR NetUserAdd_r(struct libnetapi_ctx *ctx,
                                                          user_info);
                }
        } else {
-               user_info->info21 = info25.info;
+               user_info->info21 = info21;
                status = rpccli_samr_SetUserInfo(pipe_cli, ctx,
                                                 &user_handle,
                                                 21,
@@ -1219,7 +1296,129 @@ WERROR NetUserGetInfo_l(struct libnetapi_ctx *ctx,
 WERROR NetUserSetInfo_r(struct libnetapi_ctx *ctx,
                        struct NetUserSetInfo *r)
 {
-       return WERR_NOT_SUPPORTED;
+       struct cli_state *cli = NULL;
+       struct rpc_pipe_client *pipe_cli = NULL;
+       NTSTATUS status;
+       WERROR werr;
+
+       struct policy_handle connect_handle, domain_handle, builtin_handle, 
user_handle;
+       struct lsa_String lsa_account_name;
+       struct dom_sid2 *domain_sid = NULL;
+       struct samr_Ids user_rids, name_types;
+       union samr_UserInfo user_info;
+
+       struct USER_INFO_X uX;
+
+       ZERO_STRUCT(connect_handle);
+       ZERO_STRUCT(domain_handle);
+       ZERO_STRUCT(builtin_handle);
+       ZERO_STRUCT(user_handle);
+
+       if (!r->in.buffer) {
+               return WERR_INVALID_PARAM;
+       }
+
+       switch (r->in.level) {
+               case 0:
+               case 1007:
+                       break;
+               default:
+                       werr = WERR_NOT_SUPPORTED;
+                       goto done;
+       }
+
+       werr = libnetapi_open_ipc_connection(ctx, r->in.server_name, &cli);
+       if (!W_ERROR_IS_OK(werr)) {
+               goto done;
+       }
+
+       werr = libnetapi_open_pipe(ctx, cli, &ndr_table_samr.syntax_id,
+                                  &pipe_cli);
+       if (!W_ERROR_IS_OK(werr)) {
+               goto done;
+       }
+
+       werr = libnetapi_samr_open_domain(ctx, pipe_cli,
+                                         SAMR_ACCESS_ENUM_DOMAINS |
+                                         SAMR_ACCESS_OPEN_DOMAIN,
+                                         SAMR_DOMAIN_ACCESS_LOOKUP_INFO_1 |
+                                         SAMR_DOMAIN_ACCESS_OPEN_ACCOUNT,
+                                         &connect_handle,
+                                         &domain_handle,
+                                         &domain_sid);
+       if (!W_ERROR_IS_OK(werr)) {
+               goto done;
+       }
+
+       werr = libnetapi_samr_open_builtin_domain(ctx, pipe_cli,
+                                                 SAMR_ACCESS_ENUM_DOMAINS |
+                                                 SAMR_ACCESS_OPEN_DOMAIN,
+                                                 
SAMR_DOMAIN_ACCESS_OPEN_ACCOUNT |
+                                                 
SAMR_DOMAIN_ACCESS_LOOKUP_ALIAS,
+                                                 &connect_handle,
+                                                 &builtin_handle);
+       if (!W_ERROR_IS_OK(werr)) {
+               goto done;
+       }
+
+       init_lsa_String(&lsa_account_name, r->in.user_name);
+
+       status = rpccli_samr_LookupNames(pipe_cli, ctx,
+                                        &domain_handle,
+                                        1,
+                                        &lsa_account_name,
+                                        &user_rids,
+                                        &name_types);
+       if (!NT_STATUS_IS_OK(status)) {
+               werr = ntstatus_to_werror(status);
+               goto done;
+       }
+
+       status = rpccli_samr_OpenUser(pipe_cli, ctx,
+                                     &domain_handle,
+                                     SAMR_USER_ACCESS_SET_ATTRIBUTES,
+                                     user_rids.ids[0],
+                                     &user_handle);
+       if (!NT_STATUS_IS_OK(status)) {
+               werr = ntstatus_to_werror(status);
+               goto done;
+       }
+
+       status = construct_USER_INFO_X(r->in.level, r->in.buffer, &uX);
+       if (!NT_STATUS_IS_OK(status)) {
+               werr = ntstatus_to_werror(status);
+               goto done;
+       }
+
+       convert_USER_INFO_X_to_samr_user_info21(&uX, &user_info.info21);
+
+       status = rpccli_samr_SetUserInfo(pipe_cli, ctx,
+                                        &user_handle,
+                                        21,
+                                        &user_info);
+       if (!NT_STATUS_IS_OK(status)) {
+               werr = ntstatus_to_werror(status);
+               goto done;
+       }
+
+       werr = WERR_OK;
+
+ done:
+       if (!cli) {
+               return werr;
+       }
+
+       if (is_valid_policy_hnd(&user_handle)) {
+               rpccli_samr_Close(pipe_cli, ctx, &user_handle);
+       }
+
+       if (ctx->disable_policy_handle_cache) {
+               libnetapi_samr_close_domain_handle(ctx, &domain_handle);
+               libnetapi_samr_close_builtin_handle(ctx, &builtin_handle);
+               libnetapi_samr_close_connect_handle(ctx, &connect_handle);
+       }
+
+       return werr;
 }
 
 /****************************************************************
diff --git a/source/librpc/gen_ndr/libnetapi.h 
b/source/librpc/gen_ndr/libnetapi.h
index 20a3662..75fd947 100644
--- a/source/librpc/gen_ndr/libnetapi.h
+++ b/source/librpc/gen_ndr/libnetapi.h
@@ -204,6 +204,33 @@ struct USER_INFO_1007 {
        const char * usri1007_comment;
 };
 
+struct USER_INFO_X {
+       const char * usriX_name;
+       const char * usriX_password;
+       uint32_t usriX_password_age;
+       uint32_t usriX_priv;
+       const char * usriX_home_dir;
+       const char * usriX_comment;
+       uint32_t usriX_flags;
+       const char * usriX_script_path;
+       uint32_t usriX_auth_flags;
+       const char * usriX_full_name;
+       const char * usriX_usr_comment;
+       const char * usriX_parms;
+       const char * usriX_workstations;
+       uint32_t usriX_last_logon;
+       uint32_t usriX_last_logoff;
+       uint32_t usriX_acct_expires;
+       uint32_t usriX_max_storage;
+       uint32_t usriX_units_per_week;
+       uint8_t *usriX_logon_hours;/* [unique] */
+       uint32_t usriX_bad_pw_count;
+       uint32_t usriX_num_logons;
+       const char * usriX_logon_server;
+       uint32_t usriX_country_code;
+       uint32_t usriX_code_page;
+};
+
 struct NET_DISPLAY_USER {
        const char * usri1_name;
        const char * usri1_comment;
diff --git a/source/librpc/gen_ndr/ndr_libnetapi.c 
b/source/librpc/gen_ndr/ndr_libnetapi.c
index f84fbe4..2fe5b2e 100644
--- a/source/librpc/gen_ndr/ndr_libnetapi.c
+++ b/source/librpc/gen_ndr/ndr_libnetapi.c
@@ -942,6 +942,126 @@ _PUBLIC_ void ndr_print_USER_INFO_1007(struct ndr_print 
*ndr, const char *name,
        ndr->depth--;
 }
 
+_PUBLIC_ enum ndr_err_code ndr_push_USER_INFO_X(struct ndr_push *ndr, int 
ndr_flags, const struct USER_INFO_X *r)
+{
+       if (ndr_flags & NDR_SCALARS) {
+               NDR_CHECK(ndr_push_align(ndr, 4));
+               NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->usriX_name));
+               NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->usriX_password));
+               NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 
r->usriX_password_age));
+               NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->usriX_priv));
+               NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->usriX_home_dir));
+               NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->usriX_comment));
+               NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->usriX_flags));
+               NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, 
r->usriX_script_path));
+               NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 
r->usriX_auth_flags));
+               NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, 
r->usriX_full_name));
+               NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, 
r->usriX_usr_comment));
+               NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->usriX_parms));
+               NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, 
r->usriX_workstations));
+               NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 
r->usriX_last_logon));
+               NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 
r->usriX_last_logoff));
+               NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 
r->usriX_acct_expires));
+               NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 
r->usriX_max_storage));
+               NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 
r->usriX_units_per_week));
+               NDR_CHECK(ndr_push_unique_ptr(ndr, r->usriX_logon_hours));
+               NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 
r->usriX_bad_pw_count));
+               NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 
r->usriX_num_logons));
+               NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, 
r->usriX_logon_server));
+               NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 
r->usriX_country_code));
+               NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 
r->usriX_code_page));


-- 
Samba Shared Repository

<Prev in Thread] Current Thread [Next in Thread>
  • [SCM] Samba Shared Repository - branch v3-3-test updated - release-3-2-0pre2-3442-gff9bcd5, Günther Deschner <=