Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
ISC Open Source Projects
BIND
Commits
eb95d2e9
Commit
eb95d2e9
authored
Oct 01, 2009
by
Mark Andrews
Browse files
2696. [bug] named failed to successfully process some valid
acl constructs. [RT #20308]
parent
bafa76b3
Changes
2
Hide whitespace changes
Inline
Side-by-side
CHANGES
View file @
eb95d2e9
2696. [bug] named failed to successfully process some valid
acl constructs. [RT #20308]
2695. [func] DHCP/DDNS - update fdwatch code for use by
DHCP. Modify the api to isc_sockfdwatch_t (the
callback funciton for isc_socket_fdwatchcreate)
...
...
lib/isccfg/aclconf.c
View file @
eb95d2e9
...
...
@@ -15,7 +15,7 @@
* PERFORMANCE OF THIS SOFTWARE.
*/
/* $Id: aclconf.c,v 1.2
5
2009/0
9
/01 0
0:22:28 jinmei
Exp $ */
/* $Id: aclconf.c,v 1.2
6
2009/
1
0/01 0
4:06:37 marka
Exp $ */
#include <config.h>
...
...
@@ -168,26 +168,36 @@ convert_keyname(const cfg_obj_t *keyobj, isc_log_t *lctx, isc_mem_t *mctx,
* parent.
*/
static
int
count_acl_elements
(
const
cfg_obj_t
*
caml
,
const
cfg_obj_t
*
cctx
)
count_acl_elements
(
const
cfg_obj_t
*
caml
,
const
cfg_obj_t
*
cctx
,
isc_boolean_t
*
has_negative
)
{
const
cfg_listelt_t
*
elt
;
const
cfg_obj_t
*
cacl
=
NULL
;
isc_result_t
result
;
int
n
=
0
;
if
(
has_negative
!=
NULL
)
*
has_negative
=
ISC_FALSE
;
for
(
elt
=
cfg_list_first
(
caml
);
elt
!=
NULL
;
elt
=
cfg_list_next
(
elt
))
{
const
cfg_obj_t
*
ce
=
cfg_listelt_value
(
elt
);
/* negated element; just get the value. */
if
(
cfg_obj_istuple
(
ce
))
if
(
cfg_obj_istuple
(
ce
))
{
ce
=
cfg_tuple_get
(
ce
,
"value"
);
if
(
has_negative
!=
NULL
)
*
has_negative
=
ISC_TRUE
;
}
if
(
cfg_obj_istype
(
ce
,
&
cfg_type_keyref
))
{
n
++
;
}
else
if
(
cfg_obj_islist
(
ce
))
{
n
+=
count_acl_elements
(
ce
,
cctx
);
isc_boolean_t
negative
;
n
+=
count_acl_elements
(
ce
,
cctx
,
&
negative
);
if
(
negative
)
n
++
;
}
else
if
(
cfg_obj_isstring
(
ce
))
{
const
char
*
name
=
cfg_obj_asstring
(
ce
);
if
(
strcasecmp
(
name
,
"localhost"
)
==
0
||
...
...
@@ -197,7 +207,8 @@ count_acl_elements(const cfg_obj_t *caml, const cfg_obj_t *cctx)
strcasecmp
(
name
,
"none"
)
!=
0
)
{
result
=
get_acl_def
(
cctx
,
name
,
&
cacl
);
if
(
result
==
ISC_R_SUCCESS
)
n
+=
count_acl_elements
(
cacl
,
cctx
)
+
1
;
n
+=
count_acl_elements
(
cacl
,
cctx
,
NULL
)
+
1
;
}
}
}
...
...
@@ -246,7 +257,7 @@ cfg_acl_fromconfig(const cfg_obj_t *caml,
int
nelem
;
if
(
nest_level
==
0
)
nelem
=
count_acl_elements
(
caml
,
cctx
);
nelem
=
count_acl_elements
(
caml
,
cctx
,
NULL
);
else
nelem
=
cfg_list_length
(
caml
,
ISC_FALSE
);
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment