s3-talloc Change TALLOC_ZERO_P() to talloc_zero()
[nivanova/samba-autobuild/.git] / source3 / registry / regfio.c
index 60a05040e264fd13ed05125cf376de9b155428ff..c1d40166ccd74973fa080dd6cf8f96541b324d8d 100644 (file)
  */
 
 #include "includes.h"
+#include "system/filesys.h"
 #include "regfio.h"
-#include "reg_objects.h"
+#include "../librpc/gen_ndr/ndr_security.h"
+#include "../libcli/security/security_descriptor.h"
+#include "../libcli/security/secdesc.h"
 
 #undef DBGC_CLASS
 #define DBGC_CLASS DBGC_REGISTRY
  *
  ******************************************************************/
 
+#if defined(PARANOID_MALLOC_CHECKER)
+#define PRS_ALLOC_MEM(ps, type, count) (type *)prs_alloc_mem_((ps),sizeof(type),(count))
+#else
+#define PRS_ALLOC_MEM(ps, type, count) (type *)prs_alloc_mem((ps),sizeof(type),(count))
+#endif
+
+/*******************************************************************
+ Reads or writes an NTTIME structure.
+********************************************************************/
+
+static bool smb_io_time(const char *desc, NTTIME *nttime, prs_struct *ps, int depth)
+{
+       uint32 low, high;
+       if (nttime == NULL)
+               return False;
+
+       prs_debug(ps, depth, desc, "smb_io_time");
+       depth++;
+
+       if(!prs_align(ps))
+               return False;
+
+       if (MARSHALLING(ps)) {
+               low = *nttime & 0xFFFFFFFF;
+               high = *nttime >> 32;
+       }
+
+       if(!prs_uint32("low ", ps, depth, &low)) /* low part */
+               return False;
+       if(!prs_uint32("high", ps, depth, &high)) /* high part */
+               return False;
+
+       if (UNMARSHALLING(ps)) {
+               *nttime = (((uint64_t)high << 32) + low);
+       }
+
+       return True;
+}
 
 /*******************************************************************
 *******************************************************************/
@@ -457,7 +498,7 @@ static REGF_HBIN* read_hbin_block( REGF_FILE *file, off_t offset )
        REGF_HBIN *hbin;
        uint32 record_size, curr_off, block_size, header;
        
-       if ( !(hbin = TALLOC_ZERO_P(file->mem_ctx, REGF_HBIN)) ) 
+       if ( !(hbin = talloc_zero(file->mem_ctx, REGF_HBIN)) ) 
                return NULL;
        hbin->file_off = offset;
        hbin->free_off = -1;
@@ -1032,7 +1073,7 @@ static bool hbin_prs_key( REGF_FILE *file, REGF_HBIN *hbin, REGF_NK_REC *nk )
                        }
                }
                
-               if ( !(nk->sec_desc = TALLOC_ZERO_P( file->mem_ctx, REGF_SK_REC )) )
+               if ( !(nk->sec_desc = talloc_zero( file->mem_ctx, REGF_SK_REC )) )
                        return False;
                nk->sec_desc->sk_off = nk->sk_off;
                if ( !hbin_prs_sk_rec( "sk_rec", sub_hbin, depth, nk->sec_desc ))
@@ -1338,7 +1379,7 @@ REGF_NK_REC* regfio_rootkey( REGF_FILE *file )
        if ( !file )
                return NULL;
                
-       if ( !(nk = TALLOC_ZERO_P( file->mem_ctx, REGF_NK_REC )) ) {
+       if ( !(nk = talloc_zero( file->mem_ctx, REGF_NK_REC )) ) {
                DEBUG(0,("regfio_rootkey: talloc() failed!\n"));
                return NULL;
        }
@@ -1406,7 +1447,7 @@ REGF_NK_REC* regfio_rootkey( REGF_FILE *file )
                return NULL;
                
        nk->subkey_index++;
-       if ( !(subkey = TALLOC_ZERO_P( file->mem_ctx, REGF_NK_REC )) )
+       if ( !(subkey = talloc_zero( file->mem_ctx, REGF_NK_REC )) )
                return NULL;
                
        if ( !hbin_prs_key( file, hbin, subkey ) )
@@ -1424,7 +1465,7 @@ static REGF_HBIN* regf_hbin_allocate( REGF_FILE *file, uint32 block_size )
        REGF_HBIN *hbin;
        SMB_STRUCT_STAT sbuf;
 
-       if ( !(hbin = TALLOC_ZERO_P( file->mem_ctx, REGF_HBIN )) )
+       if ( !(hbin = talloc_zero( file->mem_ctx, REGF_HBIN )) )
                return NULL;
 
        memcpy( hbin->header, "hbin", sizeof(HBIN_HDR_SIZE) );
@@ -1438,7 +1479,7 @@ static REGF_HBIN* regf_hbin_allocate( REGF_FILE *file, uint32 block_size )
        hbin->file_off       = sbuf.st_ex_size;
 
        hbin->free_off       = HBIN_HEADER_REC_SIZE;
-       hbin->free_size      = block_size - hbin->free_off + sizeof(uint32);;
+       hbin->free_size      = block_size - hbin->free_off + sizeof(uint32);
 
        hbin->block_size     = block_size;
        hbin->first_hbin_off = hbin->file_off - REGF_BLOCKSIZE;
@@ -1710,7 +1751,7 @@ static bool create_vk_record(REGF_FILE *file, REGF_VK_REC *vk,
 
 static int hashrec_cmp( REGF_HASH_REC *h1, REGF_HASH_REC *h2 )
 {
-       return StrCaseCmp( h1->fullname, h2->fullname );
+       return strcasecmp_m( h1->fullname, h2->fullname );
 }
 
 /*******************************************************************
@@ -1724,7 +1765,7 @@ static int hashrec_cmp( REGF_HASH_REC *h1, REGF_HASH_REC *h2 )
        REGF_HBIN *vlist_hbin = NULL;
        uint32 size;
 
-       if ( !(nk = TALLOC_ZERO_P( file->mem_ctx, REGF_NK_REC )) )
+       if ( !(nk = talloc_zero( file->mem_ctx, REGF_NK_REC )) )
                return NULL;
 
        memcpy( nk->header, "nk", REC_HDR_SIZE );
@@ -1790,7 +1831,7 @@ static int hashrec_cmp( REGF_HASH_REC *h1, REGF_HASH_REC *h2 )
                                return NULL;
                        }
 
-                       if ( !(nk->sec_desc = TALLOC_ZERO_P( file->mem_ctx, REGF_SK_REC )) )
+                       if ( !(nk->sec_desc = talloc_zero( file->mem_ctx, REGF_SK_REC )) )
                                return NULL;
        
                        /* now we have to store the security descriptor in the list and 
@@ -1885,7 +1926,7 @@ static int hashrec_cmp( REGF_HASH_REC *h1, REGF_HASH_REC *h2 )
                nk->values_off = prs_offset( &vlist_hbin->ps ) + vlist_hbin->first_hbin_off - HBIN_HDR_SIZE;
        
                if (nk->num_values) {
-                       if ( !(nk->values = TALLOC_ARRAY( file->mem_ctx, REGF_VK_REC, nk->num_values )) )
+                       if ( !(nk->values = talloc_array( file->mem_ctx, REGF_VK_REC, nk->num_values )) )
                                return NULL;
                } else {
                        nk->values = NULL;