The branch, master has been updated
       via  6071ca9... s4:include/smbldap.h - introduce a placeholder for 
"LDAPMessage" if we don't link against a LDAP library
       via  1d166fd... s4:winbind/wb_cmd_setpwent.c - fix a possible crash 
condition in the "winbind struct test"
       via  afcf18f... s4:samr RPC server - "SetUserInfo" - allow some more 
informations to be set
       via  915ddf0... samr.idl:UserInfo structures - fix some names according 
to MS-SAMR documentation
      from  3278554... s3: Make talloc_attrs() static

http://gitweb.samba.org/?p=samba.git;a=shortlog;h=master


- Log -----------------------------------------------------------------
commit 6071ca9daed6e18302da546e5de0c7b1d282bbd2
Author: Matthias Dieter Wallnöfer <[email protected]>
Date:   Mon Jul 5 15:19:31 2010 +0200

    s4:include/smbldap.h - introduce a placeholder for "LDAPMessage" if we 
don't link against a LDAP library

commit 1d166fd3cff7ed8b6d3d17427fb18fa9f6405b48
Author: Matthias Dieter Wallnöfer <[email protected]>
Date:   Mon Jul 5 11:44:48 2010 +0200

    s4:winbind/wb_cmd_setpwent.c - fix a possible crash condition in the 
"winbind struct test"
    
    Use a "talloc_strdup" for duplicating usernames.

commit afcf18f3c996558135cb2535e10a9d5dd32f86e7
Author: Matthias Dieter Wallnöfer <[email protected]>
Date:   Sun Jul 4 23:21:07 2010 +0200

    s4:samr RPC server - "SetUserInfo" - allow some more informations to be set
    
    Taken from the s3 implementation.

commit 915ddf0dc74d2b36d5da2c1bf377a289291c13b8
Author: Matthias Dieter Wallnöfer <[email protected]>
Date:   Sun Jul 4 22:34:43 2010 +0200

    samr.idl:UserInfo structures - fix some names according to MS-SAMR 
documentation
    
    See MS-SAMR section "FULL IDL"

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

Summary of changes:
 librpc/idl/samr.idl                   |    6 +++---
 source3/include/smbldap.h             |    1 +
 source3/lib/netapi/user.c             |    4 ++--
 source3/rpc_server/srv_samr_nt.c      |    2 +-
 source4/rpc_server/samr/dcesrv_samr.c |   25 +++++++++++++++++++++++++
 source4/winbind/wb_cmd_setpwent.c     |   18 ++++++++++--------
 6 files changed, 42 insertions(+), 14 deletions(-)


Changeset truncated at 500 lines:

diff --git a/librpc/idl/samr.idl b/librpc/idl/samr.idl
index da7b1aa..d977ddd 100644
--- a/librpc/idl/samr.idl
+++ b/librpc/idl/samr.idl
@@ -806,7 +806,7 @@ import "misc.idl", "lsa.idl", "security.idl";
 
        typedef struct {
                lsa_String comment;
-               lsa_String unknown; /* settable, but doesn't stick. probably 
obsolete */
+               lsa_String reserved; /* settable, but doesn't stick. probably 
obsolete */
                uint16 country_code;
                uint16 code_page;
        } samr_UserInfo2;
@@ -982,7 +982,7 @@ import "misc.idl", "lsa.idl", "security.idl";
                lsa_BinaryString parameters;
                lsa_BinaryString lm_owf_password;
                lsa_BinaryString nt_owf_password;
-               lsa_String unknown3;
+               lsa_String private_data;
                uint32 buf_count;
                [size_is(buf_count)] uint8 *buffer;
                uint32 rid;
@@ -997,7 +997,7 @@ import "misc.idl", "lsa.idl", "security.idl";
                uint8  lm_password_set;
                uint8  nt_password_set;
                uint8  password_expired;
-               uint8  unknown4;
+               uint8  private_data_sensitive;
        } samr_UserInfo21;
 
        typedef [public, flag(NDR_PAHEX)] struct {
diff --git a/source3/include/smbldap.h b/source3/include/smbldap.h
index e3becdb..f2a0280 100644
--- a/source3/include/smbldap.h
+++ b/source3/include/smbldap.h
@@ -235,6 +235,7 @@ char *smbldap_talloc_dn(TALLOC_CTX *mem_ctx, LDAP *ld,
 
 #else
 #define LDAP void
+#define LDAPMessage void
 #define LDAPMod void
 #define LDAP_CONST const
 #define LDAPControl void
diff --git a/source3/lib/netapi/user.c b/source3/lib/netapi/user.c
index dcc28e7..7107b32 100644
--- a/source3/lib/netapi/user.c
+++ b/source3/lib/netapi/user.c
@@ -113,7 +113,7 @@ static void convert_USER_INFO_X_to_samr_user_info21(struct 
USER_INFO_X *infoX,
        info21->parameters              = zero_parameters;
        info21->lm_owf_password         = zero_parameters;
        info21->nt_owf_password         = zero_parameters;
-       info21->unknown3.string         = NULL;
+       info21->private_data.string     = NULL;
        info21->buf_count               = 0;
        info21->buffer                  = NULL;
        info21->rid                     = infoX->usriX_user_id;
@@ -128,7 +128,7 @@ static void convert_USER_INFO_X_to_samr_user_info21(struct 
USER_INFO_X *infoX,
        info21->lm_password_set         = 0;
        info21->nt_password_set         = 0;
        info21->password_expired        = infoX->usriX_password_expired;
-       info21->unknown4                = 0;
+       info21->private_data_sensitive  = 0;
 }
 
 /****************************************************************
diff --git a/source3/rpc_server/srv_samr_nt.c b/source3/rpc_server/srv_samr_nt.c
index 499f959..7b74fd8 100644
--- a/source3/rpc_server/srv_samr_nt.c
+++ b/source3/rpc_server/srv_samr_nt.c
@@ -2464,7 +2464,7 @@ static NTSTATUS get_user_info_2(TALLOC_CTX *mem_ctx,
                                struct samu *pw)
 {
        r->comment.string               = talloc_strdup(mem_ctx, 
pdb_get_comment(pw));
-       r->unknown.string               = NULL;
+       r->reserved.string              = NULL;
        r->country_code                 = 0;
        r->code_page                    = 0;
 
diff --git a/source4/rpc_server/samr/dcesrv_samr.c 
b/source4/rpc_server/samr/dcesrv_samr.c
index 9200d37..882bf3f 100644
--- a/source4/rpc_server/samr/dcesrv_samr.c
+++ b/source4/rpc_server/samr/dcesrv_samr.c
@@ -3199,6 +3199,10 @@ static NTSTATUS dcesrv_samr_SetUserInfo(struct 
dcesrv_call_state *dce_call, TALL
                        return NT_STATUS_INVALID_PARAMETER;
 
 #define IFSET(bit) if (bit & r->in.info->info21.fields_present)
+               IFSET(SAMR_FIELD_LAST_LOGON)
+                       SET_UINT64(msg, info21.last_logon,     "lastLogon");
+               IFSET(SAMR_FIELD_LAST_LOGOFF)
+                       SET_UINT64(msg, info21.last_logoff,    "lastLogoff");
                IFSET(SAMR_FIELD_ACCT_EXPIRY)
                        SET_UINT64(msg, info21.acct_expiry,    
"accountExpires");
                IFSET(SAMR_FIELD_ACCOUNT_NAME)         
@@ -3227,6 +3231,10 @@ static NTSTATUS dcesrv_samr_SetUserInfo(struct 
dcesrv_call_state *dce_call, TALL
                        SET_AFLAGS(msg, info21.acct_flags,     
"userAccountControl");
                IFSET(SAMR_FIELD_LOGON_HOURS)
                        SET_LHOURS(msg, info21.logon_hours,    "logonHours");
+               IFSET(SAMR_FIELD_BAD_PWD_COUNT)
+                       SET_UINT  (msg, info21.bad_password_count, 
"badPwdCount");
+               IFSET(SAMR_FIELD_NUM_LOGONS)
+                       SET_UINT  (msg, info21.logon_count,    "logonCount");
                IFSET(SAMR_FIELD_COUNTRY_CODE)
                        SET_UINT  (msg, info21.country_code,   "countryCode");
                IFSET(SAMR_FIELD_CODE_PAGE)
@@ -3284,6 +3292,10 @@ static NTSTATUS dcesrv_samr_SetUserInfo(struct 
dcesrv_call_state *dce_call, TALL
                        return NT_STATUS_INVALID_PARAMETER;
 
 #define IFSET(bit) if (bit & r->in.info->info23.info.fields_present)
+               IFSET(SAMR_FIELD_LAST_LOGON)
+                       SET_UINT64(msg, info23.info.last_logon,     
"lastLogon");
+               IFSET(SAMR_FIELD_LAST_LOGOFF)
+                       SET_UINT64(msg, info23.info.last_logoff,    
"lastLogoff");
                IFSET(SAMR_FIELD_ACCT_EXPIRY)
                        SET_UINT64(msg, info23.info.acct_expiry,    
"accountExpires");
                IFSET(SAMR_FIELD_ACCOUNT_NAME)         
@@ -3312,6 +3324,11 @@ static NTSTATUS dcesrv_samr_SetUserInfo(struct 
dcesrv_call_state *dce_call, TALL
                        SET_AFLAGS(msg, info23.info.acct_flags,     
"userAccountControl");
                IFSET(SAMR_FIELD_LOGON_HOURS)
                        SET_LHOURS(msg, info23.info.logon_hours,    
"logonHours");
+               IFSET(SAMR_FIELD_BAD_PWD_COUNT)
+                       SET_UINT  (msg, info23.info.bad_password_count, 
"badPwdCount");
+               IFSET(SAMR_FIELD_NUM_LOGONS)
+                       SET_UINT  (msg, info23.info.logon_count,    
"logonCount");
+
                IFSET(SAMR_FIELD_COUNTRY_CODE)
                        SET_UINT  (msg, info23.info.country_code,   
"countryCode");
                IFSET(SAMR_FIELD_CODE_PAGE)
@@ -3378,6 +3395,10 @@ static NTSTATUS dcesrv_samr_SetUserInfo(struct 
dcesrv_call_state *dce_call, TALL
                        return NT_STATUS_INVALID_PARAMETER;
 
 #define IFSET(bit) if (bit & r->in.info->info25.info.fields_present)
+               IFSET(SAMR_FIELD_LAST_LOGON)
+                       SET_UINT64(msg, info25.info.last_logon,     
"lastLogon");
+               IFSET(SAMR_FIELD_LAST_LOGOFF)
+                       SET_UINT64(msg, info25.info.last_logoff,    
"lastLogoff");
                IFSET(SAMR_FIELD_ACCT_EXPIRY)
                        SET_UINT64(msg, info25.info.acct_expiry,    
"accountExpires");
                IFSET(SAMR_FIELD_ACCOUNT_NAME)         
@@ -3406,6 +3427,10 @@ static NTSTATUS dcesrv_samr_SetUserInfo(struct 
dcesrv_call_state *dce_call, TALL
                        SET_AFLAGS(msg, info25.info.acct_flags,     
"userAccountControl");
                IFSET(SAMR_FIELD_LOGON_HOURS)
                        SET_LHOURS(msg, info25.info.logon_hours,    
"logonHours");
+               IFSET(SAMR_FIELD_BAD_PWD_COUNT)
+                       SET_UINT  (msg, info25.info.bad_password_count, 
"badPwdCount");
+               IFSET(SAMR_FIELD_NUM_LOGONS)
+                       SET_UINT  (msg, info25.info.logon_count,    
"logonCount");
                IFSET(SAMR_FIELD_COUNTRY_CODE)
                        SET_UINT  (msg, info25.info.country_code,   
"countryCode");
                IFSET(SAMR_FIELD_CODE_PAGE)
diff --git a/source4/winbind/wb_cmd_setpwent.c 
b/source4/winbind/wb_cmd_setpwent.c
index 9384849..8164d6f 100644
--- a/source4/winbind/wb_cmd_setpwent.c
+++ b/source4/winbind/wb_cmd_setpwent.c
@@ -112,28 +112,30 @@ static void cmd_setpwent_recv_user_list(struct 
composite_context *ctx)
        if (composite_nomem(user_list, state->ctx)) return;
 
        state->ctx->status = libnet_UserList_recv(ctx, state->result,
-                       user_list);
+                                                 user_list);
        if (NT_STATUS_IS_OK(state->ctx->status) ||
                NT_STATUS_EQUAL(state->ctx->status, STATUS_MORE_ENTRIES)) {
-               if( state->result->page_index == -1) { /* First run*/
+               if (state->result->page_index == -1) { /* First run*/
                        state->result->user_list = user_list;
                        state->result->page_index = 0;
                        state->result->libnet_ctx = state->libnet_ctx;
                } else {
-                       int i;
+                       int i, cnt = state->result->user_list->out.count
+                                                       + user_list->out.count;
                        struct userlist *tmp;
                        tmp = state->result->user_list->out.users;
-                       state->result->user_list->out.users = 
talloc_realloc(state->result,tmp,struct userlist,
-                       
state->result->user_list->out.count+user_list->out.count);
+                       state->result->user_list->out.users = 
talloc_realloc(state->result,
+                                                                            
tmp, struct userlist,
+                                                                            
cnt);
                        tmp = state->result->user_list->out.users;
                        for(i=0;i<user_list->out.count;i++ ) {
-                               
tmp[i+state->result->user_list->out.count].username = 
talloc_steal(state->result,user_list->out.users[i].username);
+                               tmp[state->result->user_list->out.count + 
i].username
+                                       = talloc_strdup(state->result, 
user_list->out.users[i].username);
                        }
-                       state->result->user_list->out.count += 
user_list->out.count;
+                       state->result->user_list->out.count = cnt;
                        talloc_free(user_list);
                }
 
-
                if (NT_STATUS_IS_OK(state->ctx->status) ) {
                        composite_done(state->ctx);
                } else {


-- 
Samba Shared Repository

Reply via email to