mirror of
https://github.com/samba-team/samba.git
synced 2024-12-29 11:21:54 +03:00
ldb_get_value_by_id: Fix the return of the default value
The return of the values of a certain key has been broken since I've introduced the default value. Now the behaviour is correct: If no default value exists, start with index zero to fetch the other values. Otherwise let zero be the default value and enumerate the others starting with one.
This commit is contained in:
parent
036b650ee4
commit
f58f74949d
@ -1,7 +1,8 @@
|
||||
/*
|
||||
Unix SMB/CIFS implementation.
|
||||
Registry interface
|
||||
Copyright (C) Jelmer Vernooij 2004-2007.
|
||||
Copyright (C) 2004-2007, Jelmer Vernooij, jelmer@samba.org
|
||||
Copyright (C) 2008 Matthias Dieter Wallnöfer, mwallnoefer@yahoo.de
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
@ -318,24 +319,24 @@ static WERROR ldb_get_value_by_id(TALLOC_CTX *mem_ctx, struct hive_key *k,
|
||||
{
|
||||
struct ldb_key_data *kd = talloc_get_type(k, struct ldb_key_data);
|
||||
|
||||
if (idx == 0) {
|
||||
/* default value */
|
||||
return ldb_get_default_value(mem_ctx, k, name, data_type, data);
|
||||
} else {
|
||||
/* normal value */
|
||||
/* if default value exists, give it back */
|
||||
if (W_ERROR_IS_OK(ldb_get_default_value(mem_ctx, k, name, data_type, data)))
|
||||
if (idx == 0)
|
||||
return WERR_OK;
|
||||
else
|
||||
--idx;
|
||||
|
||||
/* Do the search if necessary */
|
||||
if (kd->values == NULL) {
|
||||
W_ERROR_NOT_OK_RETURN(cache_values(kd));
|
||||
}
|
||||
|
||||
if (idx >= kd->value_count)
|
||||
return WERR_NO_MORE_ITEMS;
|
||||
|
||||
reg_ldb_unpack_value(mem_ctx, lp_iconv_convenience(global_loadparm),
|
||||
kd->values[idx], name, data_type, data);
|
||||
/* Do the search if necessary */
|
||||
if (kd->values == NULL) {
|
||||
W_ERROR_NOT_OK_RETURN(cache_values(kd));
|
||||
}
|
||||
|
||||
if (idx >= kd->value_count)
|
||||
return WERR_NO_MORE_ITEMS;
|
||||
|
||||
reg_ldb_unpack_value(mem_ctx, lp_iconv_convenience(global_loadparm),
|
||||
kd->values[idx], name, data_type, data);
|
||||
|
||||
return WERR_OK;
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user