The branch, master has been updated via da6721e3231fb93b934440c2d92abab834289c82 (commit) via e9bba3e288a204732775427dd4098d7dea2cafd9 (commit) via d3c2de093a35d0168fead27787a3da44a39fbea9 (commit) from 9bd0cf8d60b9bbaafa20f33bb1baf222620fb0b0 (commit)
http://gitweb.samba.org/?p=samba.git;a=shortlog;h=master - Log ----------------------------------------------------------------- commit da6721e3231fb93b934440c2d92abab834289c82 Author: Jelmer Vernooij <jel...@samba.org> Date: Sun Mar 1 18:15:36 2009 +0100 Move secacl to top-level. commit e9bba3e288a204732775427dd4098d7dea2cafd9 Author: Jelmer Vernooij <jel...@samba.org> Date: Sun Mar 1 18:15:15 2009 +0100 dom_sid.h: Include dependency security.h that provides the dom_sid struct. commit d3c2de093a35d0168fead27787a3da44a39fbea9 Author: Jelmer Vernooij <jel...@samba.org> Date: Sun Mar 1 18:05:22 2009 +0100 Also re-add removed codepoint_t; I'm clearly not having my day today. ----------------------------------------------------------------------- Summary of changes: libcli/security/dom_sid.h | 2 + {source3/lib => libcli/security}/secacl.c | 34 ++++++++++++++++------------ source3/Makefile.in | 2 +- source3/include/rpc_secdes.h | 1 - source3/include/smb.h | 16 +++++++++++++ source4/libcli/security/config.mk | 3 +- 6 files changed, 40 insertions(+), 18 deletions(-) rename {source3/lib => libcli/security}/secacl.c (79%) Changeset truncated at 500 lines: diff --git a/libcli/security/dom_sid.h b/libcli/security/dom_sid.h index 9d96392..e892535 100644 --- a/libcli/security/dom_sid.h +++ b/libcli/security/dom_sid.h @@ -23,6 +23,8 @@ #ifndef _DOM_SID_H_ #define _DOM_SID_H_ +#include "librpc/gen_ndr/security.h" + int dom_sid_compare(const struct dom_sid *sid1, const struct dom_sid *sid2); bool dom_sid_equal(const struct dom_sid *sid1, const struct dom_sid *sid2); bool dom_sid_parse(const char *sidstr, struct dom_sid *ret); diff --git a/source3/lib/secacl.c b/libcli/security/secacl.c similarity index 79% rename from source3/lib/secacl.c rename to libcli/security/secacl.c index 5e82242..4564077 100644 --- a/source3/lib/secacl.c +++ b/libcli/security/secacl.c @@ -21,18 +21,22 @@ */ #include "includes.h" +#include "libcli/security/security.h" + +#define SEC_ACL_HEADER_SIZE (2 * sizeof(uint16_t) + sizeof(uint32_t)) /******************************************************************* Create a SEC_ACL structure. ********************************************************************/ -SEC_ACL *make_sec_acl(TALLOC_CTX *ctx, enum security_acl_revision revision, - int num_aces, SEC_ACE *ace_list) +struct security_acl *make_sec_acl(TALLOC_CTX *ctx, + enum security_acl_revision revision, + int num_aces, struct security_ace *ace_list) { - SEC_ACL *dst; + struct security_acl *dst; int i; - if((dst = TALLOC_ZERO_P(ctx,SEC_ACL)) == NULL) + if((dst = talloc_zero(ctx, struct security_acl)) == NULL) return NULL; dst->revision = revision; @@ -46,7 +50,7 @@ SEC_ACL *make_sec_acl(TALLOC_CTX *ctx, enum security_acl_revision revision, positive number. */ if ((num_aces) && - ((dst->aces = TALLOC_ARRAY(ctx, SEC_ACE, num_aces)) + ((dst->aces = talloc_array(ctx, struct security_ace, num_aces)) == NULL)) { return NULL; } @@ -63,7 +67,7 @@ SEC_ACL *make_sec_acl(TALLOC_CTX *ctx, enum security_acl_revision revision, Duplicate a SEC_ACL structure. ********************************************************************/ -SEC_ACL *dup_sec_acl(TALLOC_CTX *ctx, SEC_ACL *src) +struct security_acl *dup_sec_acl(TALLOC_CTX *ctx, struct security_acl *src) { if(src == NULL) return NULL; @@ -75,44 +79,44 @@ SEC_ACL *dup_sec_acl(TALLOC_CTX *ctx, SEC_ACL *src) Compares two SEC_ACL structures ********************************************************************/ -bool sec_acl_equal(SEC_ACL *s1, SEC_ACL *s2) +bool sec_acl_equal(struct security_acl *s1, struct security_acl *s2) { unsigned int i, j; /* Trivial cases */ - if (!s1 && !s2) return True; - if (!s1 || !s2) return False; + if (!s1 && !s2) return true; + if (!s1 || !s2) return false; /* Check top level stuff */ if (s1->revision != s2->revision) { DEBUG(10, ("sec_acl_equal(): revision differs (%d != %d)\n", s1->revision, s2->revision)); - return False; + return false; } if (s1->num_aces != s2->num_aces) { DEBUG(10, ("sec_acl_equal(): num_aces differs (%d != %d)\n", s1->revision, s2->revision)); - return False; + return false; } /* The ACEs could be in any order so check each ACE in s1 against each ACE in s2. */ for (i = 0; i < s1->num_aces; i++) { - bool found = False; + bool found = false; for (j = 0; j < s2->num_aces; j++) { if (sec_ace_equal(&s1->aces[i], &s2->aces[j])) { - found = True; + found = true; break; } } - if (!found) return False; + if (!found) return false; } - return True; + return true; } diff --git a/source3/Makefile.in b/source3/Makefile.in index 30990f4..f127255 100644 --- a/source3/Makefile.in +++ b/source3/Makefile.in @@ -371,7 +371,7 @@ LIB_OBJ = $(LIBSAMBAUTIL_OBJ) $(UTIL_OBJ) $(CRYPTO_OBJ) \ lib/module.o lib/events.o @LIBTEVENT_OBJ0@ \ lib/ldap_escape.o @CHARSET_STATIC@ \ lib/secdesc.o lib/util_seaccess.o ../libcli/security/secace.o \ - lib/secacl.o \ + ../libcli/security/secacl.o \ libads/krb5_errs.o lib/system_smbd.o lib/audit.o $(LIBNDR_OBJ) \ lib/file_id.o lib/idmap_cache.o \ ../libcli/security/dom_sid.o diff --git a/source3/include/rpc_secdes.h b/source3/include/rpc_secdes.h index 37f7464..c74d621 100644 --- a/source3/include/rpc_secdes.h +++ b/source3/include/rpc_secdes.h @@ -77,7 +77,6 @@ typedef struct security_ace SEC_ACE; #ifndef _SEC_ACL /* SEC_ACL */ typedef struct security_acl SEC_ACL; -#define SEC_ACL_HEADER_SIZE (2 * sizeof(uint16) + sizeof(uint32)) #define _SEC_ACL #endif diff --git a/source3/include/smb.h b/source3/include/smb.h index 189e370..f020887 100644 --- a/source3/include/smb.h +++ b/source3/include/smb.h @@ -167,6 +167,10 @@ typedef uint16 smb_ucs2_t; #define COPY_UCS2_CHAR(dest,src) (((unsigned char *)(dest))[0] = ((unsigned char *)(src))[0],\ ((unsigned char *)(dest))[1] = ((unsigned char *)(src))[1], (dest)) +/* Large data type for manipulating uint32 unicode codepoints */ +typedef uint32 codepoint_t; +#define INVALID_CODEPOINT ((codepoint_t)-1) + /* pipe string names */ #define PIPE_LANMAN "\\PIPE\\LANMAN" @@ -1827,6 +1831,18 @@ struct unix_error_map { #define SAFE_NETBIOS_CHARS ". -_" +/* generic iconv conversion structure */ +typedef struct _smb_iconv_t { + size_t (*direct)(void *cd, const char **inbuf, size_t *inbytesleft, + char **outbuf, size_t *outbytesleft); + size_t (*pull)(void *cd, const char **inbuf, size_t *inbytesleft, + char **outbuf, size_t *outbytesleft); + size_t (*push)(void *cd, const char **inbuf, size_t *inbytesleft, + char **outbuf, size_t *outbytesleft); + void *cd_direct, *cd_pull, *cd_push; + char *from_name, *to_name; +} *smb_iconv_t; + /* The maximum length of a trust account password. Used when we randomly create it, 15 char passwords exceed NT4's max password length */ diff --git a/source4/libcli/security/config.mk b/source4/libcli/security/config.mk index d99b83c..d6d9ad5 100644 --- a/source4/libcli/security/config.mk +++ b/source4/libcli/security/config.mk @@ -4,6 +4,7 @@ PUBLIC_DEPENDENCIES = LIBNDR LIBSECURITY_COMMON LIBSECURITY_OBJ_FILES = $(addprefix $(libclisrcdir)/security/, \ security_token.o security_descriptor.o \ access_check.o privilege.o sddl.o) \ - ../libcli/security/secace.o + ../libcli/security/secace.o \ + ../libcli/security/secacl.o $(eval $(call proto_header_template,$(libclisrcdir)/security/proto.h,$(LIBSECURITY_OBJ_FILES:.o=.c))) -- Samba Shared Repository