diff options
author | Stefan Metzmacher <metze@samba.org> | 2004-11-03 16:02:32 +0000 |
---|---|---|
committer | Gerald (Jerry) Carter <jerry@samba.org> | 2007-10-10 13:05:23 -0500 |
commit | e0e6e0f99d9c7645e1809a3bde1a6ab01843de67 (patch) | |
tree | f176fdc1679378599df04ab812426094ad3ccc4e /source4/librpc | |
parent | 823f169fec59cd1fab3840f7c6776c54a5d93835 (diff) | |
download | samba-e0e6e0f99d9c7645e1809a3bde1a6ab01843de67.tar.gz samba-e0e6e0f99d9c7645e1809a3bde1a6ab01843de67.tar.bz2 samba-e0e6e0f99d9c7645e1809a3bde1a6ab01843de67.zip |
r3512: - support DsCrackName GUID strings ('{faedf4f9-0de8-4582-b8b6-c475efefbe5a}')
- resolve the GUID's we got in DsGetDomainControllerInfo in the DsCrackNames test
metze
(This used to be commit f6310695821a7e750dd37936a6145232d81ab413)
Diffstat (limited to 'source4/librpc')
-rw-r--r-- | source4/librpc/ndr/ndr_basic.c | 27 |
1 files changed, 25 insertions, 2 deletions
diff --git a/source4/librpc/ndr/ndr_basic.c b/source4/librpc/ndr/ndr_basic.c index 84c4ab9ddc..2dc28c3783 100644 --- a/source4/librpc/ndr/ndr_basic.c +++ b/source4/librpc/ndr/ndr_basic.c @@ -1148,19 +1148,29 @@ void ndr_print_array_uint8(struct ndr_print *ndr, const char *name, */ NTSTATUS 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 (11 != sscanf(s, "%08x-%04x-%04x-%02x%02x-%02x%02x%02x%02x%02x%02x", + 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])) { - return NT_STATUS_INVALID_PARAMETER; + status = NT_STATUS_OK; + } else 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; @@ -1189,6 +1199,19 @@ const char *GUID_string(TALLOC_CTX *mem_ctx, const struct GUID *guid) guid->node[4], guid->node[5]); } +const char *GUID_string2(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]); +} + void ndr_print_GUID(struct ndr_print *ndr, const char *name, const struct GUID *guid) { ndr->print(ndr, "%-25s: %s", name, GUID_string(ndr, guid)); |