Changeset 740 for vendor/current/librpc/ndr/uuid.c
- Timestamp:
- Nov 14, 2012, 12:59:34 PM (13 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
vendor/current/librpc/ndr/uuid.c
r587 r740 26 26 #include "librpc/gen_ndr/ndr_misc.h" 27 27 28 /** 29 build a NDR blob from a GUID 30 */ 31 _PUBLIC_ NTSTATUS GUID_to_ndr_blob(const struct GUID *guid, TALLOC_CTX *mem_ctx, DATA_BLOB *b) 32 { 33 enum ndr_err_code ndr_err; 34 ndr_err = ndr_push_struct_blob(b, mem_ctx, guid, 35 (ndr_push_flags_fn_t)ndr_push_GUID); 36 return ndr_map_error2ntstatus(ndr_err); 37 } 38 28 39 29 40 /** … … 38 49 NT_STATUS_HAVE_NO_MEMORY(mem_ctx); 39 50 40 ndr_err = ndr_pull_struct_blob_all(b, mem_ctx, NULL,guid,51 ndr_err = ndr_pull_struct_blob_all(b, mem_ctx, guid, 41 52 (ndr_pull_flags_fn_t)ndr_pull_GUID); 42 53 talloc_free(mem_ctx); … … 64 75 } 65 76 66 if (s->length == 36) { 77 switch(s->length) { 78 case 36: 79 { 67 80 TALLOC_CTX *mem_ctx; 68 81 const char *string; … … 80 93 } 81 94 talloc_free(mem_ctx); 82 83 } else if (s->length == 38) { 95 break; 96 } 97 case 38: 98 { 84 99 TALLOC_CTX *mem_ctx; 85 100 const char *string; … … 97 112 } 98 113 talloc_free(mem_ctx); 99 100 } else if (s->length == 32) { 114 break; 115 } 116 case 32: 117 { 101 118 size_t rlen = strhex_to_str((char *)blob16.data, blob16.length, 102 119 (const char *)s->data, s->length); … … 108 125 return GUID_from_ndr_blob(s, guid); 109 126 } 110 111 if (s->length == 16) { 127 case 16: 112 128 return GUID_from_ndr_blob(s, guid); 129 default: 130 status = NT_STATUS_INVALID_PARAMETER; 131 break; 113 132 } 114 133 … … 136 155 DATA_BLOB blob = data_blob_string_const(s); 137 156 return GUID_from_data_blob(&blob, guid); 138 return NT_STATUS_OK;139 157 } 140 158 … … 233 251 { 234 252 if (u1->time_low != u2->time_low) { 235 return u1->time_low - u2->time_low;253 return u1->time_low > u2->time_low ? 1 : -1; 236 254 } 237 255 238 256 if (u1->time_mid != u2->time_mid) { 239 return u1->time_mid - u2->time_mid;257 return u1->time_mid > u2->time_mid ? 1 : -1; 240 258 } 241 259 242 260 if (u1->time_hi_and_version != u2->time_hi_and_version) { 243 return u1->time_hi_and_version - u2->time_hi_and_version;261 return u1->time_hi_and_version > u2->time_hi_and_version ? 1 : -1; 244 262 } 245 263 246 264 if (u1->clock_seq[0] != u2->clock_seq[0]) { 247 return u1->clock_seq[0] - u2->clock_seq[0];265 return u1->clock_seq[0] > u2->clock_seq[0] ? 1 : -1; 248 266 } 249 267 250 268 if (u1->clock_seq[1] != u2->clock_seq[1]) { 251 return u1->clock_seq[1] - u2->clock_seq[1];269 return u1->clock_seq[1] > u2->clock_seq[1] ? 1 : -1; 252 270 } 253 271 … … 283 301 char *ret; 284 302 DATA_BLOB guid_blob; 285 enum ndr_err_code ndr_err;286 303 TALLOC_CTX *tmp_mem; 304 NTSTATUS status; 287 305 288 306 tmp_mem = talloc_new(mem_ctx); … … 290 308 return NULL; 291 309 } 292 ndr_err = ndr_push_struct_blob(&guid_blob, tmp_mem, 293 NULL, 294 guid, 295 (ndr_push_flags_fn_t)ndr_push_GUID); 296 if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) { 310 status = GUID_to_ndr_blob(guid, tmp_mem, &guid_blob); 311 if (!NT_STATUS_IS_OK(status)) { 297 312 talloc_free(tmp_mem); 298 313 return NULL; 299 314 } 300 315 301 ret = data_blob_hex_string (mem_ctx, &guid_blob);316 ret = data_blob_hex_string_upper(mem_ctx, &guid_blob); 302 317 talloc_free(tmp_mem); 303 318 return ret; … … 317 332 } 318 333 319 _PUBLIC_ bool policy_handle_empty( struct policy_handle *h)334 _PUBLIC_ bool policy_handle_empty(const struct policy_handle *h) 320 335 { 321 336 return (h->handle_type == 0 && GUID_all_zero(&h->uuid)); 322 337 } 338 339 _PUBLIC_ bool is_valid_policy_hnd(const struct policy_handle *hnd) 340 { 341 return !policy_handle_empty(hnd); 342 } 343 344 _PUBLIC_ bool policy_handle_equal(const struct policy_handle *hnd1, 345 const struct policy_handle *hnd2) 346 { 347 if (!hnd1 || !hnd2) { 348 return false; 349 } 350 351 return (memcmp(hnd1, hnd2, sizeof(*hnd1)) == 0); 352 }
Note:
See TracChangeset
for help on using the changeset viewer.