Author: jerry Date: 2005-04-22 04:25:21 +0000 (Fri, 22 Apr 2005) New Revision: 6429
WebSVN: http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=rev&root=samba&rev=6429 Log: fix bug that caused prs_vk_rec() to fail prematurely when the reg value data was stored in the offset Modified: trunk/source/include/regfio.h trunk/source/registry/regfio.c Changeset: Modified: trunk/source/include/regfio.h =================================================================== --- trunk/source/include/regfio.h 2005-04-22 04:12:11 UTC (rev 6428) +++ trunk/source/include/regfio.h 2005-04-22 04:25:21 UTC (rev 6429) @@ -40,6 +40,7 @@ /* Flags for the vk records */ #define VK_FLAG_NAME_PRESENT 0x0001 +#define VK_DATA_IN_OFFSET 0x10000000 /* ??? List -- list of key offsets and hashed names for consistency */ Modified: trunk/source/registry/regfio.c =================================================================== --- trunk/source/registry/regfio.c 2005-04-22 04:12:11 UTC (rev 6428) +++ trunk/source/registry/regfio.c 2005-04-22 04:25:21 UTC (rev 6429) @@ -400,21 +400,19 @@ if ( vk->data_size != 0 ) { BOOL charmode = vk->type & (REG_SZ|REG_MULTI_SZ); - if ( !(vk->data = PRS_ALLOC_MEM( ps, uint8, vk->data_size) ) ) - return False; - /* the data is stored in the offset if the size <= 4 */ - if ( vk->data_size > 4 ) { - /* set the offset */ - + if ( vk->data_size & VK_DATA_IN_OFFSET ) { + if ( !(vk->data = PRS_ALLOC_MEM( ps, uint8, vk->data_size) ) ) + return False; if ( !(prs_set_offset( ps, vk->data_off+HBIN_HDR_SIZE )) ) return False; - if ( !prs_uint8s( charmode, "data", ps, depth, vk->data, vk->data_size) ) return False; } else { + if ( !(vk->data = PRS_ALLOC_MEM( ps, uint8, 4 ) ) ) + return False; SIVAL( vk->data, 0, vk->data_off ); }