mirror of
https://github.com/samba-team/samba.git
synced 2025-02-02 09:47:23 +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 used to be commit 9fa25260d3f18dd0dd041477c48571b53d86f3c4)
This commit is contained in:
parent
d7081b1a08
commit
efdf83f4a6
@ -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);
|
||||
|
@ -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;
|
||||
}
|
||||
|
@ -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
|
||||
|
||||
|
@ -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;
|
||||
r->out.data = val->data_blk;
|
||||
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;
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user