r4088: Get medieval on our ass about malloc.... :-). Take control of all our allocation
[amitay/samba.git] / source3 / registry / reg_printing.c
index 50ac81dcbb2042a0222a6bc5c9456e842c1119c1..ee4d1dcb642dc18ff4ce591c2b079d217eed9e7e 100644 (file)
@@ -73,7 +73,7 @@ static char* trim_reg_path( char *path )
                p++;
        
        if ( *p )
-               return strdup(p);
+               return SMB_STRDUP(p);
        else
                return NULL;
 }
@@ -90,6 +90,8 @@ static int print_subpath_environments( char *key, REGSUBKEY_CTR *subkeys )
                "Windows NT R4000",
                "Windows NT Alpha_AXP",
                "Windows NT PowerPC",
+               "Windows IA64",
+               "Windows x64",
                NULL };
        fstring *drivers = NULL;
        int i, env_index, num_drivers;
@@ -134,7 +136,7 @@ static int print_subpath_environments( char *key, REGSUBKEY_CTR *subkeys )
        
        /* we are dealing with a subkey of "Environments */
        
-       key2 = strdup( key );
+       key2 = SMB_STRDUP( key );
        keystr = key2;
        reg_split_path( keystr, &base, &new_path );
        
@@ -255,7 +257,7 @@ static int print_subpath_values_environments( char *key, REGVAL_CTR *val )
        
        /* env */
        
-       key2 = strdup( key );
+       key2 = SMB_STRDUP( key );
        keystr = key2;
        reg_split_path( keystr, &base, &new_path );
        if ( !base || !new_path )
@@ -288,46 +290,44 @@ static int print_subpath_values_environments( char *key, REGVAL_CTR *val )
        info3 = driver_ctr.info_3;
        
        filename = dos_basename( info3->driverpath );
-       init_unistr2( &data, filename, strlen(filename)+1 ); 
+       init_unistr2( &data, filename, UNI_STR_TERMINATE);
        regval_ctr_addvalue( val, "Driver",             REG_SZ,       (char*)data.buffer, data.uni_str_len*sizeof(uint16) );
        
        filename = dos_basename( info3->configfile );
-       init_unistr2( &data, filename, strlen(filename)+1 );
+       init_unistr2( &data, filename, UNI_STR_TERMINATE);
        regval_ctr_addvalue( val, "Configuration File", REG_SZ,       (char*)data.buffer, data.uni_str_len*sizeof(uint16) );
        
        filename = dos_basename( info3->datafile );
-       init_unistr2( &data, filename, strlen(filename)+1 );
+       init_unistr2( &data, filename, UNI_STR_TERMINATE);
        regval_ctr_addvalue( val, "Data File",          REG_SZ,       (char*)data.buffer, data.uni_str_len*sizeof(uint16) );
        
        filename = dos_basename( info3->helpfile );
-       init_unistr2( &data, filename, strlen(filename)+1 );
+       init_unistr2( &data, filename, UNI_STR_TERMINATE);
        regval_ctr_addvalue( val, "Help File",          REG_SZ,       (char*)data.buffer, data.uni_str_len*sizeof(uint16) );
        
-       init_unistr2( &data, info3->defaultdatatype, strlen(info3->defaultdatatype)+1 );
+       init_unistr2( &data, info3->defaultdatatype, UNI_STR_TERMINATE);
        regval_ctr_addvalue( val, "Data Type",          REG_SZ,       (char*)data.buffer, data.uni_str_len*sizeof(uint16) );
        
        regval_ctr_addvalue( val, "Version",            REG_DWORD,    (char*)&info3->cversion, sizeof(info3->cversion) );
        
-       if ( info3->dependentfiles )
-       {
+       if ( info3->dependentfiles ) {
                /* place the list of dependent files in a single 
                   character buffer, separating each file name by
                   a NULL */
                   
-               for ( i=0; strcmp(info3->dependentfiles[i], ""); i++ )
-               {
+               for ( i=0; strcmp(info3->dependentfiles[i], ""); i++ ) {
                        /* strip the path to only the file's base name */
                
                        filename = dos_basename( info3->dependentfiles[i] );
                        
                        length = strlen(filename);
                
-                       buffer2 = Realloc( buffer, buffer_size + (length + 1)*sizeof(uint16) );
+                       buffer2 = SMB_REALLOC( buffer, buffer_size + (length + 1)*sizeof(uint16) );
                        if ( !buffer2 )
                                break;
                        buffer = buffer2;
                        
-                       init_unistr2( &data, filename, length+1 );
+                       init_unistr2( &data, filename, UNI_STR_TERMINATE);
                        memcpy( buffer+buffer_size, (char*)data.buffer, data.uni_str_len*sizeof(uint16) );
                
                        buffer_size += (length + 1)*sizeof(uint16);
@@ -335,12 +335,11 @@ static int print_subpath_values_environments( char *key, REGVAL_CTR *val )
                
                /* terminated by double NULL.  Add the final one here */
                
-               buffer2 = Realloc( buffer, buffer_size + 2 );
+               buffer2 = SMB_REALLOC( buffer, buffer_size + 2 );
                if ( !buffer2 ) {
                        SAFE_FREE( buffer );
                        buffer_size = 0;
-               }
-               else {
+               } else {
                        buffer = buffer2;
                        buffer[buffer_size++] = '\0';
                        buffer[buffer_size++] = '\0';
@@ -493,7 +492,7 @@ static int print_subpath_printers( char *key, REGSUBKEY_CTR *subkeys )
 
        /* get information for a specific printer */
        
-       key2 = strdup( key );
+       key2 = SMB_STRDUP( key );
        keystr = key2;
        reg_split_path( keystr, &base, &new_path );
 
@@ -547,7 +546,7 @@ static int print_subpath_values_printers( char *key, REGVAL_CTR *val )
                goto done;
        }
        
-       key2 = strdup( key );
+       key2 = SMB_STRDUP( key );
        keystr = key2;
        reg_split_path( keystr, &base, &new_path );
        
@@ -573,25 +572,25 @@ static int print_subpath_values_printers( char *key, REGVAL_CTR *val )
                regval_ctr_addvalue( val, "cjobs",            REG_DWORD, (char*)&info2->cjobs,            sizeof(info2->cjobs) );
                regval_ctr_addvalue( val, "AveragePPM",       REG_DWORD, (char*)&info2->averageppm,       sizeof(info2->averageppm) );
 
-               init_unistr2( &data, info2->printername, strlen(info2->printername)+1 );
+               init_unistr2( &data, info2->printername, UNI_STR_TERMINATE);
                regval_ctr_addvalue( val, "Name",             REG_SZ, (char*)data.buffer, data.uni_str_len*sizeof(uint16) );
-               init_unistr2( &data, info2->location, strlen(info2->location)+1 );
+               init_unistr2( &data, info2->location, UNI_STR_TERMINATE);
                regval_ctr_addvalue( val, "Location",         REG_SZ, (char*)data.buffer, data.uni_str_len*sizeof(uint16) );
-               init_unistr2( &data, info2->comment, strlen(info2->comment)+1 );
+               init_unistr2( &data, info2->comment, UNI_STR_TERMINATE);
                regval_ctr_addvalue( val, "Comment",          REG_SZ, (char*)data.buffer, data.uni_str_len*sizeof(uint16) );
-               init_unistr2( &data, info2->parameters, strlen(info2->parameters)+1 );
+               init_unistr2( &data, info2->parameters, UNI_STR_TERMINATE);
                regval_ctr_addvalue( val, "Parameters",       REG_SZ, (char*)data.buffer, data.uni_str_len*sizeof(uint16) );
-               init_unistr2( &data, info2->portname, strlen(info2->portname)+1 );
+               init_unistr2( &data, info2->portname, UNI_STR_TERMINATE);
                regval_ctr_addvalue( val, "Port",             REG_SZ, (char*)data.buffer, data.uni_str_len*sizeof(uint16) );
-               init_unistr2( &data, info2->servername, strlen(info2->servername)+1 );
+               init_unistr2( &data, info2->servername, UNI_STR_TERMINATE);
                regval_ctr_addvalue( val, "Server",           REG_SZ, (char*)data.buffer, data.uni_str_len*sizeof(uint16) );
-               init_unistr2( &data, info2->sharename, strlen(info2->sharename)+1 );
+               init_unistr2( &data, info2->sharename, UNI_STR_TERMINATE);
                regval_ctr_addvalue( val, "Share",            REG_SZ, (char*)data.buffer, data.uni_str_len*sizeof(uint16) );
-               init_unistr2( &data, info2->drivername, strlen(info2->drivername)+1 );
+               init_unistr2( &data, info2->drivername, UNI_STR_TERMINATE);
                regval_ctr_addvalue( val, "Driver",           REG_SZ, (char*)data.buffer, data.uni_str_len*sizeof(uint16) );
-               init_unistr2( &data, info2->sepfile, strlen(info2->sepfile)+1 );
+               init_unistr2( &data, info2->sepfile, UNI_STR_TERMINATE);
                regval_ctr_addvalue( val, "Separator File",   REG_SZ, (char*)data.buffer, data.uni_str_len*sizeof(uint16) );
-               init_unistr2( &data, "winprint", strlen("winprint")+1 );
+               init_unistr2( &data, "winprint", UNI_STR_TERMINATE);
                regval_ctr_addvalue( val, "Print Processor",  REG_SZ, (char*)data.buffer, data.uni_str_len*sizeof(uint16) );