diff options
-rw-r--r-- | librpc/ndr/libndr.h | 2 | ||||
-rw-r--r-- | librpc/ndr/uuid.c | 52 | ||||
-rw-r--r-- | source4/dsdb/common/util.c | 52 | ||||
-rw-r--r-- | source4/dsdb/common/util.h | 10 | ||||
-rw-r--r-- | source4/dsdb/samdb/ldb_modules/simple_ldap_map.c | 1 | ||||
-rw-r--r-- | source4/dsdb/samdb/ldb_modules/wscript_build | 2 |
6 files changed, 64 insertions, 55 deletions
diff --git a/librpc/ndr/libndr.h b/librpc/ndr/libndr.h index 1a4d2a1fbc..37a3145e12 100644 --- a/librpc/ndr/libndr.h +++ b/librpc/ndr/libndr.h @@ -608,14 +608,12 @@ NTSTATUS GUID_to_ndr_blob(const struct GUID *guid, TALLOC_CTX *mem_ctx, DATA_BLO NTSTATUS GUID_from_ndr_blob(const DATA_BLOB *b, struct GUID *guid); NTSTATUS GUID_from_data_blob(const DATA_BLOB *s, struct GUID *guid); NTSTATUS GUID_from_string(const char *s, struct GUID *guid); -NTSTATUS NS_GUID_from_string(const char *s, struct GUID *guid); struct GUID GUID_zero(void); bool GUID_all_zero(const struct GUID *u); int GUID_compare(const struct GUID *u1, const struct GUID *u2); char *GUID_string(TALLOC_CTX *mem_ctx, const struct GUID *guid); char *GUID_string2(TALLOC_CTX *mem_ctx, const struct GUID *guid); char *GUID_hexstring(TALLOC_CTX *mem_ctx, const struct GUID *guid); -char *NS_GUID_string(TALLOC_CTX *mem_ctx, const struct GUID *guid); struct GUID GUID_random(void); _PUBLIC_ enum ndr_err_code ndr_pull_enum_uint8(struct ndr_pull *ndr, int ndr_flags, uint8_t *v); diff --git a/librpc/ndr/uuid.c b/librpc/ndr/uuid.c index b1436f73cb..cefe7b65d4 100644 --- a/librpc/ndr/uuid.c +++ b/librpc/ndr/uuid.c @@ -157,45 +157,6 @@ _PUBLIC_ NTSTATUS GUID_from_string(const char *s, struct GUID *guid) } /** - build a GUID from a string -*/ -_PUBLIC_ NTSTATUS NS_GUID_from_string(const char *s, struct GUID *guid) -{ - NTSTATUS status = NT_STATUS_INVALID_PARAMETER; - uint32_t time_low; - uint32_t time_mid, time_hi_and_version; - uint32_t clock_seq[2]; - uint32_t node[6]; - int i; - - if (s == NULL) { - return NT_STATUS_INVALID_PARAMETER; - } - - if (11 == sscanf(s, "%08x-%04x%04x-%02x%02x%02x%02x-%02x%02x%02x%02x", - &time_low, &time_mid, &time_hi_and_version, - &clock_seq[0], &clock_seq[1], - &node[0], &node[1], &node[2], &node[3], &node[4], &node[5])) { - status = NT_STATUS_OK; - } - - if (!NT_STATUS_IS_OK(status)) { - return status; - } - - guid->time_low = time_low; - guid->time_mid = time_mid; - guid->time_hi_and_version = time_hi_and_version; - guid->clock_seq[0] = clock_seq[0]; - guid->clock_seq[1] = clock_seq[1]; - for (i=0;i<6;i++) { - guid->node[i] = node[i]; - } - - return NT_STATUS_OK; -} - -/** * generate a random GUID */ _PUBLIC_ struct GUID GUID_random(void) @@ -318,19 +279,6 @@ _PUBLIC_ char *GUID_hexstring(TALLOC_CTX *mem_ctx, const struct GUID *guid) return ret; } -_PUBLIC_ char *NS_GUID_string(TALLOC_CTX *mem_ctx, const struct GUID *guid) -{ - return talloc_asprintf(mem_ctx, - "%08x-%04x%04x-%02x%02x%02x%02x-%02x%02x%02x%02x", - guid->time_low, guid->time_mid, - guid->time_hi_and_version, - guid->clock_seq[0], - guid->clock_seq[1], - guid->node[0], guid->node[1], - guid->node[2], guid->node[3], - guid->node[4], guid->node[5]); -} - _PUBLIC_ bool ndr_policy_handle_empty(const struct policy_handle *h) { return (h->handle_type == 0 && GUID_all_zero(&h->uuid)); diff --git a/source4/dsdb/common/util.c b/source4/dsdb/common/util.c index 72321217ea..67589abed0 100644 --- a/source4/dsdb/common/util.c +++ b/source4/dsdb/common/util.c @@ -4470,3 +4470,55 @@ int dsdb_create_partial_replica_NC(struct ldb_context *ldb, struct ldb_dn *dn) talloc_free(tmp_ctx); return LDB_SUCCESS; } + +/** + build a GUID from a string +*/ +_PUBLIC_ NTSTATUS NS_GUID_from_string(const char *s, struct GUID *guid) +{ + NTSTATUS status = NT_STATUS_INVALID_PARAMETER; + uint32_t time_low; + uint32_t time_mid, time_hi_and_version; + uint32_t clock_seq[2]; + uint32_t node[6]; + int i; + + if (s == NULL) { + return NT_STATUS_INVALID_PARAMETER; + } + + if (11 == sscanf(s, "%08x-%04x%04x-%02x%02x%02x%02x-%02x%02x%02x%02x", + &time_low, &time_mid, &time_hi_and_version, + &clock_seq[0], &clock_seq[1], + &node[0], &node[1], &node[2], &node[3], &node[4], &node[5])) { + status = NT_STATUS_OK; + } + + if (!NT_STATUS_IS_OK(status)) { + return status; + } + + guid->time_low = time_low; + guid->time_mid = time_mid; + guid->time_hi_and_version = time_hi_and_version; + guid->clock_seq[0] = clock_seq[0]; + guid->clock_seq[1] = clock_seq[1]; + for (i=0;i<6;i++) { + guid->node[i] = node[i]; + } + + return NT_STATUS_OK; +} + +_PUBLIC_ char *NS_GUID_string(TALLOC_CTX *mem_ctx, const struct GUID *guid) +{ + return talloc_asprintf(mem_ctx, + "%08x-%04x%04x-%02x%02x%02x%02x-%02x%02x%02x%02x", + guid->time_low, guid->time_mid, + guid->time_hi_and_version, + guid->clock_seq[0], + guid->clock_seq[1], + guid->node[0], guid->node[1], + guid->node[2], guid->node[3], + guid->node[4], guid->node[5]); +} diff --git a/source4/dsdb/common/util.h b/source4/dsdb/common/util.h index 5ec19fb776..c16ce81c2c 100644 --- a/source4/dsdb/common/util.h +++ b/source4/dsdb/common/util.h @@ -19,6 +19,9 @@ along with this program. If not, see <http://www.gnu.org/licenses/>. */ +#ifndef __DSDB_COMMON_UTIL_H__ +#define __DSDB_COMMON_UTIL_H__ + /* flags for dsdb_request_add_controls(). For the module functions, the upper 16 bits are in dsdb/samdb/ldb_modules/util.h @@ -57,3 +60,10 @@ bool is_attr_in_list(const char * const * attrs, const char *attr); #define DSDB_SECRET_ATTRIBUTES_COMMA , #define DSDB_SECRET_ATTRIBUTES DSDB_SECRET_ATTRIBUTES_EX(DSDB_SECRET_ATTRIBUTES_COMMA) + +struct GUID; + +char *NS_GUID_string(TALLOC_CTX *mem_ctx, const struct GUID *guid); +NTSTATUS NS_GUID_from_string(const char *s, struct GUID *guid); + +#endif /* __DSDB_COMMON_UTIL_H__ */ diff --git a/source4/dsdb/samdb/ldb_modules/simple_ldap_map.c b/source4/dsdb/samdb/ldb_modules/simple_ldap_map.c index 9c7599acf5..91852f03ad 100644 --- a/source4/dsdb/samdb/ldb_modules/simple_ldap_map.c +++ b/source4/dsdb/samdb/ldb_modules/simple_ldap_map.c @@ -33,6 +33,7 @@ #include "librpc/gen_ndr/ndr_misc.h" #include "librpc/ndr/libndr.h" #include "dsdb/samdb/samdb.h" +#include "dsdb/common/util.h" #include <ldb_handlers.h> struct entryuuid_private { diff --git a/source4/dsdb/samdb/ldb_modules/wscript_build b/source4/dsdb/samdb/ldb_modules/wscript_build index 7f74ea4ecb..22cced971b 100644 --- a/source4/dsdb/samdb/ldb_modules/wscript_build +++ b/source4/dsdb/samdb/ldb_modules/wscript_build @@ -120,7 +120,7 @@ bld.SAMBA_MODULE('ldb_simple_ldap_map', init_function='ldb_simple_ldap_map_module_init', module_init_name='ldb_init_module', internal_module=False, - deps='talloc ldb ndr ldbsamba' + deps='talloc ldb ndr ldbsamba samdb-common' ) |