1
0
mirror of https://github.com/samba-team/samba.git synced 2025-02-15 05:57:49 +03:00

Correct comments about breadth first, as the registry tree is stored in a

depth first fashion in the file.

Also add some more infrastructure needed to handle storing these trees.
This commit is contained in:
Richard Sharpe -
parent 03fce4ed0f
commit f993f7187c

View File

@ -328,6 +328,16 @@ Hope this helps.... (Although it was "fun" for me to uncover this things,
#define CVAL(buf) ((unsigned char)*((unsigned char *)(buf)))
#define SIVAL(buf, val) \
((unsigned char)buf[0]=(unsigned char)((val)&0xFF),\
(unsigned char)buf[1]=(unsigned char)(((val)>>8)&0xFF),\
(unsigned char)buf[2]=(unsigned char)(((val)>>16)&0xFF),\
(unsigned char)buf[3]=(unsigned char)((val)>>24))
#define SSVAL(buf, val) \
((unsigned char)buf[0]=(unsigned char)((val)&0xFF),\
(unsigned char)buf[1]=(unsigned char)(((val)>>8)&0xFF))
static int verbose = 0;
static int print_security = 0;
static int full_print = 0;
@ -2403,15 +2413,29 @@ int nt_load_registry(REGF *regf)
typedef struct hbin_blk_s {
struct hbin_blk_s *next;
unsigned int file_offset; /* Offset in file */
unsigned int free_space; /* Amount of free space in block */
unsigned int free_space; /* Amount of free space in block */
unsigned int fsp_off; /* Start of free space in block */
int complete, stored;
} HBIN_BLK;
/*
* Allocate a new hbin block and link it to the others.
*/
int nt_create_hbin_blk(REGF *regf)
{
return 0;
}
/*
* Store a KEY in the file ...
*
* We store this depth first, and defer storing the lf struct until
* all the sub-keys have been stored.
*/
int nt_store_reg_key(REGF *regf, REG_KEY *key)
{
NK_HDR *nk_hdr;
return 0;
}
@ -2429,9 +2453,11 @@ int nt_store_reg_header(REGF *regf){
* We write out the header and then each of the keys etc into the file
* We have to flatten the data structure ...
*
* The structures are stored in a breadth-first fashion, with all records
* The structures are stored in a depth-first fashion, with all records
* aligned on 8-byte boundaries, with sub-keys and values layed down before
* the lists that contain them. SK records are layed down first, however.
* The lf fields are layed down after all sub-keys have been layed down, it
* seems, including the whole tree associated with each sub-key.
*/
int nt_store_registry(REGF *regf)
{