Changeset 745 for trunk/server/source3/registry/reg_objects.c
- Timestamp:
- Nov 27, 2012, 4:43:17 PM (13 years ago)
- Location:
- trunk/server
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/server
- Property svn:mergeinfo changed
/vendor/current merged: 581,587,591,594,597,600,615,618,740
- Property svn:mergeinfo changed
-
trunk/server/source3/registry/reg_objects.c
r414 r745 3 3 * Virtual Windows Registry Layer 4 4 * Copyright (C) Gerald Carter 2002-2005 5 * Copyright (C) Michael Adam 2007-2010 5 6 * 6 7 * This program is free software; you can redistribute it and/or modify … … 21 22 22 23 #include "includes.h" 24 #include "registry.h" 25 #include "reg_objects.h" 26 #include "util_tdb.h" 27 #include "dbwrap.h" 28 #include "../libcli/registry/util_reg.h" 23 29 24 30 #undef DBGC_CLASS 25 31 #define DBGC_CLASS DBGC_REGISTRY 32 33 /* low level structure to contain registry values */ 34 35 struct regval_blob { 36 fstring valuename; 37 uint32_t type; 38 /* this should be encapsulated in an RPC_DATA_BLOB */ 39 uint32_t size; /* in bytes */ 40 uint8_t *data_p; 41 }; 42 43 /* container for registry values */ 44 45 struct regval_ctr { 46 uint32_t num_values; 47 struct regval_blob **values; 48 int seqnum; 49 }; 26 50 27 51 struct regsubkey_ctr { … … 109 133 static WERROR regsubkey_ctr_hash_keyname(struct regsubkey_ctr *ctr, 110 134 const char *keyname, 111 uint32 idx)135 uint32_t idx) 112 136 { 113 137 WERROR werr; … … 115 139 werr = ntstatus_to_werror(dbwrap_store_bystring_upper(ctr->subkeys_hash, 116 140 keyname, 117 make_tdb_data((uint8 *)&idx,141 make_tdb_data((uint8_t *)&idx, 118 142 sizeof(idx)), 119 143 TDB_REPLACE)); … … 143 167 static WERROR regsubkey_ctr_index_for_keyname(struct regsubkey_ctr *ctr, 144 168 const char *keyname, 145 uint32 *idx)169 uint32_t *idx) 146 170 { 147 171 TDB_DATA data; … … 162 186 163 187 if (idx != NULL) { 164 *idx = *(uint32 *)data.dptr;188 *idx = *(uint32_t *)data.dptr; 165 189 } 166 190 … … 218 242 { 219 243 WERROR werr; 220 uint32 idx, j;244 uint32_t idx, j; 221 245 222 246 if (keyname == NULL) { … … 293 317 */ 294 318 319 /** 320 * allocate a regval_ctr structure. 321 */ 322 WERROR regval_ctr_init(TALLOC_CTX *mem_ctx, struct regval_ctr **ctr) 323 { 324 if (ctr == NULL) { 325 return WERR_INVALID_PARAM; 326 } 327 328 *ctr = talloc_zero(mem_ctx, struct regval_ctr); 329 if (*ctr == NULL) { 330 return WERR_NOMEM; 331 } 332 333 return WERR_OK; 334 } 335 295 336 /*********************************************************************** 296 337 How many keys does the container hold ? … … 328 369 if ( val->data_p && val->size ) 329 370 { 330 if ( !(copy->data_p = (uint8 *)memdup( val->data_p,371 if ( !(copy->data_p = (uint8_t *)memdup( val->data_p, 331 372 val->size )) ) { 332 373 DEBUG(0,("dup_registry_value: memdup() failed for [%d] " … … 359 400 *********************************************************************/ 360 401 361 uint8 * regval_data_p(struct regval_blob *val)402 uint8_t* regval_data_p(struct regval_blob *val) 362 403 { 363 404 return val->data_p; … … 367 408 *********************************************************************/ 368 409 369 uint32 regval_size(struct regval_blob *val)410 uint32_t regval_size(struct regval_blob *val) 370 411 { 371 412 return val->size; … … 383 424 *********************************************************************/ 384 425 385 uint32 regval_type(struct regval_blob *val)426 uint32_t regval_type(struct regval_blob *val) 386 427 { 387 428 return val->type; … … 394 435 395 436 struct regval_blob *regval_ctr_specific_value(struct regval_ctr *ctr, 396 uint32 idx)437 uint32_t idx) 397 438 { 398 439 if ( !(idx < ctr->num_values) ) … … 423 464 424 465 struct regval_blob *regval_compose(TALLOC_CTX *ctx, const char *name, 425 uint 16type,426 const char*data_p, size_t size)466 uint32_t type, 467 const uint8_t *data_p, size_t size) 427 468 { 428 469 struct regval_blob *regval = TALLOC_P(ctx, struct regval_blob); … … 435 476 regval->type = type; 436 477 if (size) { 437 regval->data_p = (uint8 *)TALLOC_MEMDUP(regval, data_p, size);478 regval->data_p = (uint8_t *)TALLOC_MEMDUP(regval, data_p, size); 438 479 if (!regval->data_p) { 439 480 TALLOC_FREE(regval); … … 452 493 **********************************************************************/ 453 494 454 int regval_ctr_addvalue(struct regval_ctr *ctr, const char *name, uint 16type,455 const char*data_p, size_t size)495 int regval_ctr_addvalue(struct regval_ctr *ctr, const char *name, uint32_t type, 496 const uint8_t *data_p, size_t size) 456 497 { 457 498 if ( !name ) … … 503 544 504 545 return regval_ctr_addvalue(ctr, name, REG_SZ, 505 (const char*)blob.data,546 (const uint8_t *)blob.data, 506 547 blob.length); 507 548 } … … 520 561 521 562 return regval_ctr_addvalue(ctr, name, REG_MULTI_SZ, 522 (const char*)blob.data,563 (const uint8_t *)blob.data, 523 564 blob.length); 524 565 } … … 532 573 if ( val ) { 533 574 regval_ctr_addvalue(ctr, val->valuename, val->type, 534 ( char*)val->data_p, val->size);575 (uint8_t *)val->data_p, val->size); 535 576 } 536 577 … … 586 627 } 587 628 588 /*********************************************************************** 589 return the data_p as a uint32 590 **********************************************************************/ 591 592 uint32 regval_dword(struct regval_blob *val) 593 { 594 uint32 data; 629 int regval_ctr_get_seqnum(struct regval_ctr *ctr) 630 { 631 if (ctr == NULL) { 632 return -1; 633 } 634 635 return ctr->seqnum; 636 } 637 638 WERROR regval_ctr_set_seqnum(struct regval_ctr *ctr, int seqnum) 639 { 640 if (ctr == NULL) { 641 return WERR_INVALID_PARAM; 642 } 643 644 ctr->seqnum = seqnum; 645 646 return WERR_OK; 647 } 648 649 /*********************************************************************** 650 return the data_p as a uint32_t 651 **********************************************************************/ 652 653 uint32_t regval_dword(struct regval_blob *val) 654 { 655 uint32_t data; 595 656 596 657 data = IVAL( regval_data_p(val), 0 );
Note:
See TracChangeset
for help on using the changeset viewer.