mirror of
https://github.com/samba-team/samba.git
synced 2024-12-23 17:34:34 +03:00
Format objectGUIDs on ads dumps.
This commit is contained in:
parent
f6103f866a
commit
7eaf7e7115
@ -31,7 +31,7 @@ struct uuid {
|
||||
uint32 time_low;
|
||||
uint16 time_mid;
|
||||
uint16 time_hi_and_version;
|
||||
uint16 clock_seq;
|
||||
uint8 clock_seq[2];
|
||||
uint8 node[6];
|
||||
};
|
||||
|
||||
@ -43,7 +43,7 @@ static void uuid_pack(const struct uuid *uu, GUID *ptr)
|
||||
SIVAL(out, 0, uu->time_low);
|
||||
SSVAL(out, 4, uu->time_mid);
|
||||
SSVAL(out, 6, uu->time_hi_and_version);
|
||||
SSVAL(out, 8, uu->clock_seq);
|
||||
memcpy(out+8, uu->clock_seq, 2);
|
||||
memcpy(out+10, uu->node, 6);
|
||||
}
|
||||
|
||||
@ -54,7 +54,7 @@ static void uuid_unpack(const GUID in, struct uuid *uu)
|
||||
uu->time_low = IVAL(ptr, 0);
|
||||
uu->time_mid = SVAL(ptr, 4);
|
||||
uu->time_hi_and_version = SVAL(ptr, 6);
|
||||
uu->clock_seq = SVAL(ptr, 8);
|
||||
memcpy(uu->clock_seq, ptr+8, 2);
|
||||
memcpy(uu->node, ptr+10, 6);
|
||||
}
|
||||
|
||||
@ -66,7 +66,38 @@ void uuid_generate_random(GUID *out)
|
||||
generate_random_buffer(tmp.info, sizeof(tmp.info), True);
|
||||
uuid_unpack(tmp, &uu);
|
||||
|
||||
uu.clock_seq = (uu.clock_seq & 0x3FFF) | 0x8000;
|
||||
uu.clock_seq[0] = (uu.clock_seq[0] & 0x3F) | 0x80;
|
||||
uu.time_hi_and_version = (uu.time_hi_and_version & 0x0FFF) | 0x4000;
|
||||
uuid_pack(&uu, out);
|
||||
}
|
||||
|
||||
char *uuid_to_string(const GUID in)
|
||||
{
|
||||
struct uuid uu;
|
||||
char *out;
|
||||
|
||||
uuid_unpack(in, &uu);
|
||||
|
||||
asprintf(&out, "%08x-%04x-%04x-%02x%02x-%02x%02x%02x%02x%02x%02x",
|
||||
uu.time_low, uu.time_mid, uu.time_hi_and_version,
|
||||
uu.clock_seq[0], uu.clock_seq[1],
|
||||
uu.node[0], uu.node[1], uu.node[2],
|
||||
uu.node[3], uu.node[4], uu.node[5]);
|
||||
|
||||
return out;
|
||||
}
|
||||
|
||||
const char *uuid_string_static(const GUID in)
|
||||
{
|
||||
struct uuid uu;
|
||||
static char out[37];
|
||||
|
||||
uuid_unpack(in, &uu);
|
||||
slprintf(out, sizeof(out) -1,
|
||||
"%08x-%04x-%04x-%02x%02x-%02x%02x%02x%02x%02x%02x",
|
||||
uu.time_low, uu.time_mid, uu.time_hi_and_version,
|
||||
uu.clock_seq[0], uu.clock_seq[1],
|
||||
uu.node[0], uu.node[1], uu.node[2],
|
||||
uu.node[3], uu.node[4], uu.node[5]);
|
||||
return out;
|
||||
}
|
||||
|
@ -1106,6 +1106,23 @@ static void dump_binary(const char *field, struct berval **values)
|
||||
}
|
||||
}
|
||||
|
||||
struct uuid {
|
||||
uint32 i1;
|
||||
uint16 i2;
|
||||
uint16 i3;
|
||||
uint8 s[8];
|
||||
};
|
||||
|
||||
static void dump_guid(const char *field, struct berval **values)
|
||||
{
|
||||
int i;
|
||||
GUID guid;
|
||||
for (i=0; values[i]; i++) {
|
||||
memcpy(guid.info, values[i]->bv_val, sizeof(guid.info));
|
||||
printf("%s: %s\n", field, uuid_string_static(guid));
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
dump a sid result from ldap
|
||||
*/
|
||||
@ -1172,7 +1189,7 @@ static BOOL ads_dump_field(char *field, void **values, void *data_area)
|
||||
BOOL string;
|
||||
void (*handler)(const char *, struct berval **);
|
||||
} handlers[] = {
|
||||
{"objectGUID", False, dump_binary},
|
||||
{"objectGUID", False, dump_guid},
|
||||
{"nTSecurityDescriptor", False, dump_sd},
|
||||
{"dnsRecord", False, dump_binary},
|
||||
{"objectSid", False, dump_sid},
|
||||
|
Loading…
Reference in New Issue
Block a user