diff options
author | Andrew Bartlett <abartlet@samba.org> | 2008-02-28 10:43:57 +1100 |
---|---|---|
committer | Andrew Bartlett <abartlet@samba.org> | 2008-02-28 10:43:57 +1100 |
commit | 2a209a6a9dcd0c6b7814fa7eb3838dbaf5d57481 (patch) | |
tree | f32d81caee74ec343aefacf6de95e67058db2bec | |
parent | b33873ae5d13993030f41f5304d78640fe07d25c (diff) | |
download | samba-2a209a6a9dcd0c6b7814fa7eb3838dbaf5d57481.tar.gz |
Ensure we don't try and set the acct_flags if they are 0 (meaning
unchanged in this interface).
We seem to have two very similar interfaces here, and this is the
poorer interface, for this reason.
Andrew Bartlett
(This used to be commit 582073eff1f21f81abb3e5f1ce2eca4ebef56a00)
-rw-r--r-- | source4/libnet/libnet_user.c | 2 | ||||
-rw-r--r-- | source4/libnet/libnet_user.h | 8 |
2 files changed, 9 insertions, 1 deletions
diff --git a/source4/libnet/libnet_user.c b/source4/libnet/libnet_user.c index d5ccf34a57a..678c7a226e6 100644 --- a/source4/libnet/libnet_user.c +++ b/source4/libnet/libnet_user.c @@ -534,7 +534,7 @@ static NTSTATUS set_user_changes(TALLOC_CTX *mem_ctx, struct usermod_change *mod SET_FIELD_NTTIME(r->in, user, mod, acct_expiry, USERMOD_FIELD_ACCT_EXPIRY); /* account flags change */ - SET_FIELD_UINT32(r->in, user, mod, acct_flags, USERMOD_FIELD_ACCT_FLAGS); + SET_FIELD_ACCT_FLAGS(r->in, user, mod, acct_flags, USERMOD_FIELD_ACCT_FLAGS); return NT_STATUS_OK; } diff --git a/source4/libnet/libnet_user.h b/source4/libnet/libnet_user.h index ece06f08fc0..94aa38464f6 100644 --- a/source4/libnet/libnet_user.h +++ b/source4/libnet/libnet_user.h @@ -91,6 +91,14 @@ struct libnet_ModifyUser { mod->fields |= flag; \ } +#define SET_FIELD_ACCT_FLAGS(new, current, mod, field, flag) \ + if (new.field) { \ + if (current->field != new.field) { \ + mod->field = new.field; \ + mod->fields |= flag; \ + } \ + } + struct libnet_UserInfo { struct { |