Skip to content
GitLab
Projects
Groups
Snippets
/
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
0c29904b
Commit
0c29904b
authored
Feb 08, 2016
by
Mukund Sivaraman
Browse files
Check that configured view class isn't a meta class (#41572)
parent
08913705
Changes
8
Hide whitespace changes
Inline
Side-by-side
CHANGES
View file @
0c29904b
4315. [bug] Check that configured view class isn't a meta class.
[RT #41572].
4314. [contrib] Added 'dnsperf-2.1.0.0-1', a set of performance
testing tools provided by Nominum, Inc.
...
...
bin/check/named-checkconf.c
View file @
0c29904b
...
...
@@ -441,15 +441,27 @@ configure_view(const char *vclass, const char *view, const cfg_obj_t *config,
return
(
result
);
}
static
isc_result_t
config_getclass
(
const
cfg_obj_t
*
classobj
,
dns_rdataclass_t
defclass
,
dns_rdataclass_t
*
classp
)
{
isc_textregion_t
r
;
if
(
!
cfg_obj_isstring
(
classobj
))
{
*
classp
=
defclass
;
return
(
ISC_R_SUCCESS
);
}
DE_CONST
(
cfg_obj_asstring
(
classobj
),
r
.
base
);
r
.
length
=
strlen
(
r
.
base
);
return
(
dns_rdataclass_fromtext
(
classp
,
&
r
));
}
/*% load zones from the configuration */
static
isc_result_t
load_zones_fromconfig
(
const
cfg_obj_t
*
config
,
isc_mem_t
*
mctx
)
{
const
cfg_listelt_t
*
element
;
const
cfg_obj_t
*
classobj
;
const
cfg_obj_t
*
views
;
const
cfg_obj_t
*
vconfig
;
const
char
*
vclass
;
isc_result_t
result
=
ISC_R_SUCCESS
;
isc_result_t
tresult
;
...
...
@@ -460,17 +472,24 @@ load_zones_fromconfig(const cfg_obj_t *config, isc_mem_t *mctx) {
element
!=
NULL
;
element
=
cfg_list_next
(
element
))
{
const
cfg_obj_t
*
classobj
;
dns_rdataclass_t
viewclass
;
const
char
*
vname
;
char
buf
[
sizeof
(
"CLASS65535"
)];
vclass
=
"IN"
;
vconfig
=
cfg_listelt_value
(
element
);
if
(
vconfig
!=
NULL
)
{
classobj
=
cfg_tuple_get
(
vconfig
,
"class"
);
if
(
cfg_obj_isstring
(
classobj
))
vclass
=
cfg_obj_asstring
(
classobj
);
}
if
(
vconfig
==
NULL
)
continue
;
classobj
=
cfg_tuple_get
(
vconfig
,
"class"
);
CHECK
(
config_getclass
(
classobj
,
dns_rdataclass_in
,
&
viewclass
));
if
(
dns_rdataclass_ismeta
(
viewclass
))
CHECK
(
ISC_R_FAILURE
);
dns_rdataclass_format
(
viewclass
,
buf
,
sizeof
(
buf
));
vname
=
cfg_obj_asstring
(
cfg_tuple_get
(
vconfig
,
"name"
));
tresult
=
configure_view
(
vclass
,
vname
,
config
,
vconfig
,
mctx
);
tresult
=
configure_view
(
buf
,
vname
,
config
,
vconfig
,
mctx
);
if
(
tresult
!=
ISC_R_SUCCESS
)
result
=
tresult
;
}
...
...
@@ -480,6 +499,8 @@ load_zones_fromconfig(const cfg_obj_t *config, isc_mem_t *mctx) {
if
(
tresult
!=
ISC_R_SUCCESS
)
result
=
tresult
;
}
cleanup:
return
(
result
);
}
...
...
bin/named/server.c
View file @
0c29904b
...
...
@@ -4419,8 +4419,15 @@ get_viewinfo(const cfg_obj_t *vconfig, const char **namep,
viewname
=
cfg_obj_asstring
(
cfg_tuple_get
(
vconfig
,
"name"
));
classobj
=
cfg_tuple_get
(
vconfig
,
"class"
);
result
=
ns_config_getclass
(
classobj
,
dns_rdataclass_in
,
&
viewclass
);
CHECK
(
ns_config_getclass
(
classobj
,
dns_rdataclass_in
,
&
viewclass
));
if
(
dns_rdataclass_ismeta
(
viewclass
))
{
isc_log_write
(
ns_g_lctx
,
NS_LOGCATEGORY_GENERAL
,
NS_LOGMODULE_SERVER
,
ISC_LOG_ERROR
,
"view '%s': class must not be meta"
,
viewname
);
CHECK
(
ISC_R_FAILURE
);
}
}
else
{
viewname
=
"_default"
;
viewclass
=
dns_rdataclass_in
;
...
...
@@ -4429,6 +4436,7 @@ get_viewinfo(const cfg_obj_t *vconfig, const char **namep,
*
namep
=
viewname
;
*
classp
=
viewclass
;
cleanup:
return
(
result
);
}
...
...
bin/tests/system/checkconf/tests.sh
View file @
0c29904b
...
...
@@ -199,6 +199,30 @@ $CHECKCONF -z altdlz.conf > /dev/null 2>&1 || ret=1
if
[
$ret
!=
0
]
;
then
echo
"I:failed"
;
ret
=
1
;
fi
status
=
`
expr
$status
+
$ret
`
echo
"I: checking that named-checkconf -z fails on view with ANY class"
ret
=
0
$CHECKCONF
-z
view-class-any1.conf
>
/dev/null 2>&1
&&
ret
=
1
if
[
$ret
!=
0
]
;
then
echo
"I:failed"
;
ret
=
1
;
fi
status
=
`
expr
$status
+
$ret
`
echo
"I: checking that named-checkconf -z fails on view with CLASS255 class"
ret
=
0
$CHECKCONF
-z
view-class-any2.conf
>
/dev/null 2>&1
&&
ret
=
1
if
[
$ret
!=
0
]
;
then
echo
"I:failed"
;
ret
=
1
;
fi
status
=
`
expr
$status
+
$ret
`
echo
"I: checking that named-checkconf -z passes on view with IN class"
ret
=
0
$CHECKCONF
-z
view-class-in1.conf
>
/dev/null 2>&1
||
ret
=
1
if
[
$ret
!=
0
]
;
then
echo
"I:failed"
;
ret
=
1
;
fi
status
=
`
expr
$status
+
$ret
`
echo
"I: checking that named-checkconf -z passes on view with CLASS1 class"
ret
=
0
$CHECKCONF
-z
view-class-in2.conf
>
/dev/null 2>&1
||
ret
=
1
if
[
$ret
!=
0
]
;
then
echo
"I:failed"
;
ret
=
1
;
fi
status
=
`
expr
$status
+
$ret
`
echo
"I: check that check-names fails as configured"
ret
=
0
$CHECKCONF
-z
check-names-fail.conf
>
checkconf.out1 2>&1
&&
ret
=
1
...
...
bin/tests/system/checkconf/view-class-any1.conf
0 → 100644
View file @
0c29904b
/*
*
Copyright
(
C
)
2016
Internet
Systems
Consortium
,
Inc
. (
"ISC"
)
*
*
Permission
to
use
,
copy
,
modify
,
and
/
or
distribute
this
software
for
any
*
purpose
with
or
without
fee
is
hereby
granted
,
provided
that
the
above
*
copyright
notice
and
this
permission
notice
appear
in
all
copies
.
*
*
THE
SOFTWARE
IS
PROVIDED
"AS IS"
AND
ISC
DISCLAIMS
ALL
WARRANTIES
WITH
*
REGARD
TO
THIS
SOFTWARE
INCLUDING
ALL
IMPLIED
WARRANTIES
OF
MERCHANTABILITY
*
AND
FITNESS
.
IN
NO
EVENT
SHALL
ISC
BE
LIABLE
FOR
ANY
SPECIAL
,
DIRECT
,
*
INDIRECT
,
OR
CONSEQUENTIAL
DAMAGES
OR
ANY
DAMAGES
WHATSOEVER
RESULTING
FROM
*
LOSS
OF
USE
,
DATA
OR
PROFITS
,
WHETHER
IN
AN
ACTION
OF
CONTRACT
,
NEGLIGENCE
*
OR
OTHER
TORTIOUS
ACTION
,
ARISING
OUT
OF
OR
IN
CONNECTION
WITH
THE
USE
OR
*
PERFORMANCE
OF
THIS
SOFTWARE
.
*/
view
"example"
any
{ };
bin/tests/system/checkconf/view-class-any2.conf
0 → 100644
View file @
0c29904b
/*
*
Copyright
(
C
)
2016
Internet
Systems
Consortium
,
Inc
. (
"ISC"
)
*
*
Permission
to
use
,
copy
,
modify
,
and
/
or
distribute
this
software
for
any
*
purpose
with
or
without
fee
is
hereby
granted
,
provided
that
the
above
*
copyright
notice
and
this
permission
notice
appear
in
all
copies
.
*
*
THE
SOFTWARE
IS
PROVIDED
"AS IS"
AND
ISC
DISCLAIMS
ALL
WARRANTIES
WITH
*
REGARD
TO
THIS
SOFTWARE
INCLUDING
ALL
IMPLIED
WARRANTIES
OF
MERCHANTABILITY
*
AND
FITNESS
.
IN
NO
EVENT
SHALL
ISC
BE
LIABLE
FOR
ANY
SPECIAL
,
DIRECT
,
*
INDIRECT
,
OR
CONSEQUENTIAL
DAMAGES
OR
ANY
DAMAGES
WHATSOEVER
RESULTING
FROM
*
LOSS
OF
USE
,
DATA
OR
PROFITS
,
WHETHER
IN
AN
ACTION
OF
CONTRACT
,
NEGLIGENCE
*
OR
OTHER
TORTIOUS
ACTION
,
ARISING
OUT
OF
OR
IN
CONNECTION
WITH
THE
USE
OR
*
PERFORMANCE
OF
THIS
SOFTWARE
.
*/
view
"example"
class255
{ };
bin/tests/system/checkconf/view-class-in1.conf
0 → 100644
View file @
0c29904b
/*
*
Copyright
(
C
)
2016
Internet
Systems
Consortium
,
Inc
. (
"ISC"
)
*
*
Permission
to
use
,
copy
,
modify
,
and
/
or
distribute
this
software
for
any
*
purpose
with
or
without
fee
is
hereby
granted
,
provided
that
the
above
*
copyright
notice
and
this
permission
notice
appear
in
all
copies
.
*
*
THE
SOFTWARE
IS
PROVIDED
"AS IS"
AND
ISC
DISCLAIMS
ALL
WARRANTIES
WITH
*
REGARD
TO
THIS
SOFTWARE
INCLUDING
ALL
IMPLIED
WARRANTIES
OF
MERCHANTABILITY
*
AND
FITNESS
.
IN
NO
EVENT
SHALL
ISC
BE
LIABLE
FOR
ANY
SPECIAL
,
DIRECT
,
*
INDIRECT
,
OR
CONSEQUENTIAL
DAMAGES
OR
ANY
DAMAGES
WHATSOEVER
RESULTING
FROM
*
LOSS
OF
USE
,
DATA
OR
PROFITS
,
WHETHER
IN
AN
ACTION
OF
CONTRACT
,
NEGLIGENCE
*
OR
OTHER
TORTIOUS
ACTION
,
ARISING
OUT
OF
OR
IN
CONNECTION
WITH
THE
USE
OR
*
PERFORMANCE
OF
THIS
SOFTWARE
.
*/
view
"example"
in
{ };
bin/tests/system/checkconf/view-class-in2.conf
0 → 100644
View file @
0c29904b
/*
*
Copyright
(
C
)
2016
Internet
Systems
Consortium
,
Inc
. (
"ISC"
)
*
*
Permission
to
use
,
copy
,
modify
,
and
/
or
distribute
this
software
for
any
*
purpose
with
or
without
fee
is
hereby
granted
,
provided
that
the
above
*
copyright
notice
and
this
permission
notice
appear
in
all
copies
.
*
*
THE
SOFTWARE
IS
PROVIDED
"AS IS"
AND
ISC
DISCLAIMS
ALL
WARRANTIES
WITH
*
REGARD
TO
THIS
SOFTWARE
INCLUDING
ALL
IMPLIED
WARRANTIES
OF
MERCHANTABILITY
*
AND
FITNESS
.
IN
NO
EVENT
SHALL
ISC
BE
LIABLE
FOR
ANY
SPECIAL
,
DIRECT
,
*
INDIRECT
,
OR
CONSEQUENTIAL
DAMAGES
OR
ANY
DAMAGES
WHATSOEVER
RESULTING
FROM
*
LOSS
OF
USE
,
DATA
OR
PROFITS
,
WHETHER
IN
AN
ACTION
OF
CONTRACT
,
NEGLIGENCE
*
OR
OTHER
TORTIOUS
ACTION
,
ARISING
OUT
OF
OR
IN
CONNECTION
WITH
THE
USE
OR
*
PERFORMANCE
OF
THIS
SOFTWARE
.
*/
view
"example"
class1
{ };
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new 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