summaryrefslogtreecommitdiff
path: root/source3/registry
diff options
context:
space:
mode:
authorGünther Deschner <gd@samba.org>2009-09-23 20:46:08 +0200
committerGünther Deschner <gd@samba.org>2009-09-30 00:29:49 +0200
commit2c11b73391551723e4ada8664b1ba77873420217 (patch)
tree9cd85bb729c6aa7e2801ebbcd9acbed39f7e8054 /source3/registry
parentfcee9d2c97a673347baf58f749f35785a896e468 (diff)
downloadsamba-2c11b73391551723e4ada8664b1ba77873420217.tar.gz
samba-2c11b73391551723e4ada8664b1ba77873420217.tar.bz2
samba-2c11b73391551723e4ada8664b1ba77873420217.zip
s3-registry: use push_reg_sz().
Guenther
Diffstat (limited to 'source3/registry')
-rw-r--r--source3/registry/reg_backend_db.c8
-rw-r--r--source3/registry/reg_backend_printing.c79
-rw-r--r--source3/registry/reg_eventlog.c40
-rw-r--r--source3/registry/reg_perfcount.c10
-rw-r--r--source3/registry/reg_util.c16
5 files changed, 75 insertions, 78 deletions
diff --git a/source3/registry/reg_backend_db.c b/source3/registry/reg_backend_db.c
index dec43ae741..b9ff5dc7fc 100644
--- a/source3/registry/reg_backend_db.c
+++ b/source3/registry/reg_backend_db.c
@@ -250,7 +250,7 @@ WERROR init_registry_key(const char *add_path)
static void regdb_ctr_add_value(struct regval_ctr *ctr,
struct builtin_regkey_value *value)
{
- UNISTR2 data;
+ DATA_BLOB data;
switch(value->type) {
case REG_DWORD:
@@ -260,10 +260,10 @@ static void regdb_ctr_add_value(struct regval_ctr *ctr,
break;
case REG_SZ:
- init_unistr2(&data, value->data.string, UNI_STR_TERMINATE);
+ push_reg_sz(talloc_tos(), &data, value->data.string);
regval_ctr_addvalue(ctr, value->valuename, REG_SZ,
- (char*)data.buffer,
- data.uni_str_len*sizeof(uint16));
+ (char*)data.data,
+ data.length);
break;
default:
diff --git a/source3/registry/reg_backend_printing.c b/source3/registry/reg_backend_printing.c
index 8c6f673ace..2dc5d84215 100644
--- a/source3/registry/reg_backend_printing.c
+++ b/source3/registry/reg_backend_printing.c
@@ -386,7 +386,7 @@ static bool key_printers_store_keys( const char *key, struct regsubkey_ctr *subk
static void fill_in_printer_values(NT_PRINTER_INFO_LEVEL_2 *info2, struct regval_ctr *values)
{
struct spoolss_DeviceMode *devmode;
- UNISTR2 data;
+ DATA_BLOB data;
char *p;
uint32 printer_status = PRINTER_STATUS_OK;
@@ -406,35 +406,36 @@ static void fill_in_printer_values(NT_PRINTER_INFO_LEVEL_2 *info2, struct regval
p = info2->printername;
else
p++;
- init_unistr2( &data, p, UNI_STR_TERMINATE);
- regval_ctr_addvalue( values, "Name", REG_SZ, (char*)data.buffer, data.uni_str_len*sizeof(uint16) );
- init_unistr2( &data, info2->location, UNI_STR_TERMINATE);
- regval_ctr_addvalue( values, "Location", REG_SZ, (char*)data.buffer, data.uni_str_len*sizeof(uint16) );
+ push_reg_sz(talloc_tos(), &data, p);
+ regval_ctr_addvalue( values, "Name", REG_SZ, (char*)data.data, data.length);
- init_unistr2( &data, info2->comment, UNI_STR_TERMINATE);
- regval_ctr_addvalue( values, "Description", REG_SZ, (char*)data.buffer, data.uni_str_len*sizeof(uint16) );
+ push_reg_sz(talloc_tos(), &data, info2->location);
+ regval_ctr_addvalue( values, "Location", REG_SZ, (char*)data.data, data.length);
- init_unistr2( &data, info2->parameters, UNI_STR_TERMINATE);
- regval_ctr_addvalue( values, "Parameters", REG_SZ, (char*)data.buffer, data.uni_str_len*sizeof(uint16) );
+ push_reg_sz(talloc_tos(), &data, info2->comment);
+ regval_ctr_addvalue( values, "Description", REG_SZ, (char*)data.data, data.length);
- init_unistr2( &data, info2->portname, UNI_STR_TERMINATE);
- regval_ctr_addvalue( values, "Port", REG_SZ, (char*)data.buffer, data.uni_str_len*sizeof(uint16) );
+ push_reg_sz(talloc_tos(), &data, info2->parameters);
+ regval_ctr_addvalue( values, "Parameters", REG_SZ, (char*)data.data, data.length);
- init_unistr2( &data, info2->sharename, UNI_STR_TERMINATE);
- regval_ctr_addvalue( values, "Share Name", REG_SZ, (char*)data.buffer, data.uni_str_len*sizeof(uint16) );
+ push_reg_sz(talloc_tos(), &data, info2->portname);
+ regval_ctr_addvalue( values, "Port", REG_SZ, (char*)data.data, data.length);
- init_unistr2( &data, info2->drivername, UNI_STR_TERMINATE);
- regval_ctr_addvalue( values, "Printer Driver", REG_SZ, (char*)data.buffer, data.uni_str_len*sizeof(uint16) );
+ push_reg_sz(talloc_tos(), &data, info2->sharename);
+ regval_ctr_addvalue( values, "Share Name", REG_SZ, (char*)data.data, data.length);
- init_unistr2( &data, info2->sepfile, UNI_STR_TERMINATE);
- regval_ctr_addvalue( values, "Separator File", REG_SZ, (char*)data.buffer, data.uni_str_len*sizeof(uint16) );
+ push_reg_sz(talloc_tos(), &data, info2->drivername);
+ regval_ctr_addvalue( values, "Printer Driver", REG_SZ, (char*)data.data, data.length);
- init_unistr2( &data, "WinPrint", UNI_STR_TERMINATE);
- regval_ctr_addvalue( values, "Print Processor", REG_SZ, (char*)data.buffer, data.uni_str_len*sizeof(uint16) );
+ push_reg_sz(talloc_tos(), &data, info2->sepfile);
+ regval_ctr_addvalue( values, "Separator File", REG_SZ, (char*)data.data, data.length);
- init_unistr2( &data, "RAW", UNI_STR_TERMINATE);
- regval_ctr_addvalue( values, "Datatype", REG_SZ, (char*)data.buffer, data.uni_str_len*sizeof(uint16) );
+ push_reg_sz(talloc_tos(), &data, "WinPrint");
+ regval_ctr_addvalue( values, "Print Processor", REG_SZ, (char*)data.data, data.length);
+
+ push_reg_sz(talloc_tos(), &data, "RAW");
+ regval_ctr_addvalue( values, "Datatype", REG_SZ, (char*)data.data, data.length);
/* stream the device mode */
@@ -894,31 +895,31 @@ static void fill_in_driver_values(NT_PRINTER_DRIVER_INFO_LEVEL_3 *info3, struct
int buffer_size = 0;
int i, length;
const char *filename;
- UNISTR2 data;
+ DATA_BLOB data;
filename = dos_basename( info3->driverpath );
- init_unistr2( &data, filename, UNI_STR_TERMINATE);
- regval_ctr_addvalue( values, "Driver", REG_SZ, (char*)data.buffer,
- data.uni_str_len*sizeof(uint16) );
+ push_reg_sz(talloc_tos(), &data, filename);
+ regval_ctr_addvalue( values, "Driver", REG_SZ,
+ (char *)data.data, data.length);
filename = dos_basename( info3->configfile );
- init_unistr2( &data, filename, UNI_STR_TERMINATE);
- regval_ctr_addvalue( values, "Configuration File", REG_SZ, (char*)data.buffer,
- data.uni_str_len*sizeof(uint16) );
+ push_reg_sz(talloc_tos(), &data, filename);
+ regval_ctr_addvalue( values, "Configuration File", REG_SZ,
+ (char *)data.data, data.length);
filename = dos_basename( info3->datafile );
- init_unistr2( &data, filename, UNI_STR_TERMINATE);
- regval_ctr_addvalue( values, "Data File", REG_SZ, (char*)data.buffer,
- data.uni_str_len*sizeof(uint16) );
+ push_reg_sz(talloc_tos(), &data, filename);
+ regval_ctr_addvalue( values, "Data File", REG_SZ,
+ (char *)data.data, data.length);
filename = dos_basename( info3->helpfile );
- init_unistr2( &data, filename, UNI_STR_TERMINATE);
- regval_ctr_addvalue( values, "Help File", REG_SZ, (char*)data.buffer,
- data.uni_str_len*sizeof(uint16) );
+ push_reg_sz(talloc_tos(), &data, filename);
+ regval_ctr_addvalue( values, "Help File", REG_SZ,
+ (char *)data.data, data.length);
- init_unistr2( &data, info3->defaultdatatype, UNI_STR_TERMINATE);
- regval_ctr_addvalue( values, "Data Type", REG_SZ, (char*)data.buffer,
- data.uni_str_len*sizeof(uint16) );
+ push_reg_sz(talloc_tos(), &data, info3->defaultdatatype);
+ regval_ctr_addvalue( values, "Data Type", REG_SZ,
+ (char *)data.data, data.length);
regval_ctr_addvalue( values, "Version", REG_DWORD, (char*)&info3->cversion,
sizeof(info3->cversion) );
@@ -940,8 +941,8 @@ static void fill_in_driver_values(NT_PRINTER_DRIVER_INFO_LEVEL_3 *info3, struct
break;
}
- init_unistr2( &data, filename, UNI_STR_TERMINATE);
- memcpy( buffer+buffer_size, (char*)data.buffer, data.uni_str_len*sizeof(uint16) );
+ push_reg_sz(talloc_tos(), &data, filename);
+ memcpy( buffer+buffer_size, (char*)data.data, data.length);
buffer_size += (length + 1)*sizeof(uint16);
}
diff --git a/source3/registry/reg_eventlog.c b/source3/registry/reg_eventlog.c
index 45ade52102..c0d5b95b0b 100644
--- a/source3/registry/reg_eventlog.c
+++ b/source3/registry/reg_eventlog.c
@@ -40,7 +40,7 @@ bool eventlog_init_keys(void)
uint32 uiMaxSize;
uint32 uiRetention;
uint32 uiCategoryCount;
- UNISTR2 data;
+ DATA_BLOB data;
TALLOC_CTX *ctx = talloc_tos();
WERROR werr;
@@ -114,18 +114,16 @@ bool eventlog_init_keys(void)
regval_ctr_addvalue(values, "Retention", REG_DWORD,
(char *)&uiRetention,
sizeof(uint32));
- init_unistr2(&data, *elogs, UNI_STR_TERMINATE);
+ push_reg_sz(talloc_tos(), &data, *elogs);
regval_ctr_addvalue(values, "PrimaryModule", REG_SZ,
- (char *)data.buffer,
- data.uni_str_len *
- sizeof(uint16));
- init_unistr2(&data, *elogs, UNI_STR_TERMINATE);
+ (char *)data.data,
+ data.length);
+ push_reg_sz(talloc_tos(), &data, *elogs);
regval_ctr_addvalue(values, "Sources", REG_MULTI_SZ,
- (char *)data.buffer,
- data.uni_str_len *
- sizeof(uint16));
+ (char *)data.data,
+ data.length);
evtfilepath = talloc_asprintf(ctx,
"%%SystemRoot%%\\system32\\config\\%s.tdb",
@@ -133,9 +131,9 @@ bool eventlog_init_keys(void)
if (!evtfilepath) {
TALLOC_FREE(values);
}
- init_unistr2(&data, evtfilepath, UNI_STR_TERMINATE);
- regval_ctr_addvalue(values, "File", REG_EXPAND_SZ, (char *)data.buffer,
- data.uni_str_len * sizeof(uint16));
+ push_reg_sz(talloc_tos(), &data, evtfilepath);
+ regval_ctr_addvalue(values, "File", REG_EXPAND_SZ, (char *)data.data,
+ data.length);
regdb_store_values(evtlogpath, values);
}
@@ -166,15 +164,13 @@ bool eventlog_init_keys(void)
REG_DWORD,
( char * ) &uiCategoryCount,
sizeof( uint32 ) );
- init_unistr2( &data,
- "%SystemRoot%\\system32\\eventlog.dll",
- UNI_STR_TERMINATE );
+ push_reg_sz(talloc_tos(), &data,
+ "%SystemRoot%\\system32\\eventlog.dll");
regval_ctr_addvalue( values, "CategoryMessageFile",
REG_EXPAND_SZ,
- ( char * ) data.buffer,
- data.uni_str_len *
- sizeof( uint16 ) );
+ ( char * ) data.data,
+ data.length);
regdb_store_values( evtlogpath, values );
}
TALLOC_FREE(values);
@@ -203,7 +199,7 @@ bool eventlog_add_source( const char *eventlog, const char *sourcename,
struct regsubkey_ctr *subkeys;
struct regval_ctr *values;
struct regval_blob *rval;
- UNISTR2 data;
+ DATA_BLOB data;
uint16 *msz_wp;
int mbytes, ii;
bool already_in;
@@ -373,11 +369,11 @@ bool eventlog_add_source( const char *eventlog, const char *sourcename,
regdb_fetch_values( evtlogpath, values );
- init_unistr2( &data, messagefile, UNI_STR_TERMINATE );
+ push_reg_sz(talloc_tos(), &data, messagefile);
regval_ctr_addvalue( values, "EventMessageFile", REG_SZ,
- ( char * ) data.buffer,
- data.uni_str_len * sizeof( uint16 ) );
+ ( char * ) data.data,
+ data.length);
regdb_store_values( evtlogpath, values );
TALLOC_FREE(values);
diff --git a/source3/registry/reg_perfcount.c b/source3/registry/reg_perfcount.c
index 14716b2f53..ea4ccbf58f 100644
--- a/source3/registry/reg_perfcount.c
+++ b/source3/registry/reg_perfcount.c
@@ -161,7 +161,7 @@ static uint32 _reg_perfcount_multi_sz_from_tdb(TDB_CONTEXT *tdb,
char temp[256];
char *buf1 = *retbuf;
uint32 working_size = 0;
- UNISTR2 name_index, name;
+ DATA_BLOB name_index, name;
memset(temp, 0, sizeof(temp));
snprintf(temp, sizeof(temp), "%d", keyval);
@@ -182,8 +182,8 @@ static uint32 _reg_perfcount_multi_sz_from_tdb(TDB_CONTEXT *tdb,
buffer_size = 0;
return buffer_size;
}
- init_unistr2(&name_index, (const char *)kbuf.dptr, UNI_STR_TERMINATE);
- memcpy(buf1+buffer_size, (char *)name_index.buffer, working_size);
+ push_reg_sz(talloc_tos(), &name_index, (const char *)kbuf.dptr);
+ memcpy(buf1+buffer_size, (char *)name_index.data, working_size);
buffer_size += working_size;
/* Now encode the actual name */
working_size = (dbuf.dsize + 1)*sizeof(uint16);
@@ -195,8 +195,8 @@ static uint32 _reg_perfcount_multi_sz_from_tdb(TDB_CONTEXT *tdb,
memset(temp, 0, sizeof(temp));
memcpy(temp, dbuf.dptr, dbuf.dsize);
SAFE_FREE(dbuf.dptr);
- init_unistr2(&name, temp, UNI_STR_TERMINATE);
- memcpy(buf1+buffer_size, (char *)name.buffer, working_size);
+ push_reg_sz(talloc_tos(), &name, temp);
+ memcpy(buf1+buffer_size, (char *)name.data, working_size);
buffer_size += working_size;
*retbuf = buf1;
diff --git a/source3/registry/reg_util.c b/source3/registry/reg_util.c
index 714a39f307..3b0885db82 100644
--- a/source3/registry/reg_util.c
+++ b/source3/registry/reg_util.c
@@ -221,7 +221,7 @@ size_t regval_build_multi_sz( char **values, uint16 **buffer )
int i;
size_t buf_size = 0;
uint16 *buf, *b;
- UNISTR2 sz;
+ DATA_BLOB sz;
if ( !values || !buffer )
return 0;
@@ -234,14 +234,14 @@ size_t regval_build_multi_sz( char **values, uint16 **buffer )
}
for ( i=0; values[i]; i++ ) {
- ZERO_STRUCT( sz );
+
/* DEBUG(0,("regval_build_multi_sz: building [%s]\n",values[i])); */
- init_unistr2( &sz, values[i], UNI_STR_TERMINATE );
+ push_reg_sz(talloc_tos(), &sz, values[i]);
/* Alloc some more memory. Always add one one to account for the
double NULL termination */
- b = TALLOC_REALLOC_ARRAY( NULL, buf, uint16, buf_size+sz.uni_str_len+1 );
+ b = TALLOC_REALLOC_ARRAY( NULL, buf, uint16, buf_size+sz.length/2+1 );
if ( !b ) {
DEBUG(0,("regval_build_multi_sz: talloc() reallocation error!\n"));
TALLOC_FREE( buffer );
@@ -250,12 +250,12 @@ size_t regval_build_multi_sz( char **values, uint16 **buffer )
buf = b;
/* copy the unistring2 buffer and increment the size */
- /* dump_data(1,sz.buffer,sz.uni_str_len*2); */
- memcpy( buf+buf_size, sz.buffer, sz.uni_str_len*2 );
- buf_size += sz.uni_str_len;
+ /* dump_data(1,sz.data,sz.length); */
+ memcpy( buf+buf_size, sz.data, sz.length);
+ buf_size += sz.length;
/* cleanup rather than leaving memory hanging around */
- TALLOC_FREE( sz.buffer );
+ TALLOC_FREE( sz.data );
}
buf[buf_size++] = 0x0;