1
0
mirror of https://github.com/samba-team/samba.git synced 2025-01-11 05:18:09 +03:00

r4213: Store REG_SZ in UTF16, not the unix charset..

It is now possible to use the "Add..." button in the Security
tab of the File Properties Dialog box.
This commit is contained in:
Jelmer Vernooij 2004-12-15 02:27:22 +00:00 committed by Gerald (Jerry) Carter
parent cd9572b72e
commit 9fa25260d3
4 changed files with 13 additions and 30 deletions

View File

@ -57,11 +57,10 @@ char *reg_val_data_string(TALLOC_CTX *mem_ctx, struct registry_value *v)
if(v->data_len == 0) return talloc_strdup(mem_ctx, "");
switch (v->data_type) {
case REG_SZ:
return talloc_strndup(mem_ctx, v->data_blk, v->data_len);
case REG_EXPAND_SZ:
return talloc_strndup(mem_ctx, v->data_blk, v->data_len);
case REG_SZ:
convert_string_talloc(mem_ctx, CH_UTF16, CH_UNIX, v->data_blk, v->data_len, (void **)&ret);
return ret;
case REG_BINARY:
ret = talloc(mem_ctx, v->data_len * 3 + 2);
@ -120,8 +119,7 @@ BOOL reg_string_to_val(TALLOC_CTX *mem_ctx, const char *type_str, const char *da
{
case REG_SZ:
case REG_EXPAND_SZ:
(*value)->data_blk = talloc_strdup(mem_ctx, data_str);
(*value)->data_len = strlen(data_str);
(*value)->data_len = convert_string_talloc(mem_ctx, CH_UNIX, CH_UTF16, data_str, strlen(data_str), &(*value)->data_blk);
break;
case REG_DWORD:
(*value)->data_len = sizeof(uint32);

View File

@ -935,13 +935,6 @@ static WERROR vk_to_val(TALLOC_CTX *mem_ctx, struct registry_key *parent, VK_HDR
}
if(tmp->data_type == REG_SZ) {
char *ret;
dat_len = convert_string_talloc(mem_ctx, CH_UTF16, CH_UNIX, dtmp, dat_len, (void **)&ret);
dtmp = ret;
}
tmp->data_blk = dtmp;
tmp->data_len = dat_len;
}

View File

@ -1,43 +1,29 @@
# editing 10 records
# record 1
dn: key=control,key=currentcontrolset,key=system,hive=
key: control
# record 2
dn: key=services,key=control,key=currentcontrolset,key=system,hive=
key: services
# record 3
dn: value=ProductType,key=productoptions,key=control,key=currentcontrolset,key=system,hive=
value: ProductType
data: WinNT
data:: VwBpAG4ATgBUAA=
type: 1
# record 4
dn: key=productoptions,key=control,key=currentcontrolset,key=system,hive=
key: productoptions
# record 5
dn: key=system,hive=
key: system
# record 6
dn: @BASEINFO
sequenceNumber: 13
# record 7
dn: key=netlogon,key=services,key=currentcontrolset,key=system,hive=
key: netlogon
# record 8
dn: key=services,key=currentcontrolset,key=system,hive=
key: services
# record 9
dn: key=print,key=control,key=currentcontrolset,key=system,hive=
key: print
# record 10
dn: key=currentcontrolset,key=system,hive=
key: currentcontrolset

View File

@ -360,10 +360,16 @@ static WERROR winreg_QueryValue(struct dcesrv_call_state *dce_call, TALLOC_CTX *
return result;
}
/* Just asking for the size of the buffer */
r->out.type = &val->data_type;
r->out.size = r->in.size;
r->out.length = &val->data_len;
if (!r->in.data) {
r->out.size = talloc_p(mem_ctx, uint32);
*r->out.size = val->data_len;
} else {
r->out.size = r->in.size;
r->out.data = val->data_blk;
}
return WERR_OK;
}