Skip to content
Snippets Groups Projects
Commit 0adedc6c authored by Lubos Slovak's avatar Lubos Slovak
Browse files

Merge branch 'master' into rrset-from-wire

parents 6ebfd00d 1f8c9859
Branches
Tags
No related merge requests found
......@@ -345,17 +345,19 @@ static int check_rrsig_rdata(err_handler_t *handler,
}
/* signer's name is same as in the zone apex */
const knot_dname_t *signer_name =
knot_rrsig_signer_name(rrsig, rr_pos);
knot_dname_t *signer = knot_dname_copy(knot_rrsig_signer_name(rrsig, rr_pos), NULL);
knot_dname_to_lower(signer);
/* dnskey is in the apex node */
if (!knot_rrset_empty(dnskey_rrset) &&
!knot_dname_is_equal(signer_name, dnskey_rrset->owner)) {
!knot_dname_is_equal(signer, dnskey_rrset->owner)) {
err_handler_handle_error(handler, zone, node,
ZC_ERR_RRSIG_RDATA_DNSKEY_OWNER,
info_str);
}
knot_dname_free(&signer, NULL);
/* Compare algorithm, key tag and signer's name with DNSKEY rrset
* one of the records has to match. Signer name has been checked
* before */
......
......@@ -119,10 +119,22 @@ static int sign_ctx_add_self(knot_dnssec_sign_context_t *ctx,
assert(ctx);
assert(rdata);
const uint8_t *signer = rdata + RRSIG_RDATA_SIGNER_OFFSET;
size_t data_size = RRSIG_RDATA_SIGNER_OFFSET + knot_dname_size(signer);
int result;
return knot_dnssec_sign_add(ctx, rdata, data_size);
// add static header
result = knot_dnssec_sign_add(ctx, rdata, RRSIG_RDATA_SIGNER_OFFSET);
if (result != KNOT_EOK) {
return result;
}
// add signer name
const uint8_t *signer_ptr = rdata + RRSIG_RDATA_SIGNER_OFFSET;
knot_dname_t *signer = knot_dname_copy(signer_ptr, NULL);
knot_dname_to_lower(signer);
result = knot_dnssec_sign_add(ctx, signer, knot_dname_size(signer));
knot_dname_free(&signer, NULL);
return result;
}
/*!
......@@ -254,7 +266,7 @@ int knot_sign_rrset(knot_rrset_t *rrsigs, const knot_rrset_t *covered,
{
if (knot_rrset_empty(covered) || !key || !sign_ctx || !policy ||
rrsigs->type != KNOT_RRTYPE_RRSIG ||
(knot_dname_cmp(rrsigs->owner, covered->owner) != 0)
!knot_dname_is_equal(rrsigs->owner, covered->owner)
) {
return KNOT_EINVAL;
}
......
......@@ -29,13 +29,15 @@ typedef struct {
const err_table_t err_msgs[] = {
ERR_ITEM( ZS_OK, "ok" ),
ERR_ITEM( ZS_SYSTEM,
"system error" ),
ERR_ITEM( ZS_FILE_OPEN,
"file open error" ),
ERR_ITEM( ZS_FILE_PATH,
"file path error" ),
ERR_ITEM( ZS_FILE_FSTAT,
"fstat error" ),
ERR_ITEM( ZS_FILE_DIRECTORY,
ERR_ITEM( ZS_FILE_DIR,
"not zone file but directory" ),
ERR_ITEM( ZS_FILE_MMAP,
"file mmap error" ),
......
......@@ -27,10 +27,11 @@
enum err_codes {
ZS_OK = 0,
ZS_FILE_OPEN = -1000,
ZS_SYSTEM = -1000,
ZS_FILE_OPEN,
ZS_FILE_PATH,
ZS_FILE_FSTAT,
ZS_FILE_DIRECTORY,
ZS_FILE_DIR,
ZS_FILE_MMAP,
ZS_DOS_NEWLINE,
ZS_UNCOVERED_STATE,
......
......@@ -73109,6 +73109,13 @@ int zs_scanner_parse_file(zs_scanner_t *s,
return -1;
}
 
// Getting OS page size.
page_size = sysconf(_SC_PAGESIZE);
if (page_size <= 0) {
ERR(ZS_SYSTEM);
return -1;
}
// Copying file name.
s->file.name = strdup(file_name);
 
......@@ -73133,9 +73140,6 @@ int zs_scanner_parse_file(zs_scanner_t *s,
return -1;
}
 
// Getting OS page size.
page_size = sysconf(_SC_PAGESIZE);
// Getting file information.
if (fstat(s->file.descriptor, &file_stat) == -1) {
ERR(ZS_FILE_FSTAT);
......@@ -73146,7 +73150,7 @@ int zs_scanner_parse_file(zs_scanner_t *s,
 
// Check for directory.
if (S_ISDIR(file_stat.st_mode)) {
ERR(ZS_FILE_DIRECTORY);
ERR(ZS_FILE_DIR);
close(s->file.descriptor);
free(s->file.name);
return -1;
......@@ -7430,6 +7430,13 @@ int zs_scanner_parse_file(zs_scanner_t *s,
return -1;
}
// Getting OS page size.
page_size = sysconf(_SC_PAGESIZE);
if (page_size <= 0) {
ERR(ZS_SYSTEM);
return -1;
}
// Copying file name.
s->file.name = strdup(file_name);
......@@ -7454,9 +7461,6 @@ int zs_scanner_parse_file(zs_scanner_t *s,
return -1;
}
// Getting OS page size.
page_size = sysconf(_SC_PAGESIZE);
// Getting file information.
if (fstat(s->file.descriptor, &file_stat) == -1) {
ERR(ZS_FILE_FSTAT);
......@@ -7467,7 +7471,7 @@ int zs_scanner_parse_file(zs_scanner_t *s,
// Check for directory.
if (S_ISDIR(file_stat.st_mode)) {
ERR(ZS_FILE_DIRECTORY);
ERR(ZS_FILE_DIR);
close(s->file.descriptor);
free(s->file.name);
return -1;
......
......@@ -277,6 +277,13 @@ int zs_scanner_parse_file(zs_scanner_t *s,
return -1;
}
// Getting OS page size.
page_size = sysconf(_SC_PAGESIZE);
if (page_size <= 0) {
ERR(ZS_SYSTEM);
return -1;
}
// Copying file name.
s->file.name = strdup(file_name);
......@@ -301,9 +308,6 @@ int zs_scanner_parse_file(zs_scanner_t *s,
return -1;
}
// Getting OS page size.
page_size = sysconf(_SC_PAGESIZE);
// Getting file information.
if (fstat(s->file.descriptor, &file_stat) == -1) {
ERR(ZS_FILE_FSTAT);
......@@ -314,7 +318,7 @@ int zs_scanner_parse_file(zs_scanner_t *s,
// Check for directory.
if (S_ISDIR(file_stat.st_mode)) {
ERR(ZS_FILE_DIRECTORY);
ERR(ZS_FILE_DIR);
close(s->file.descriptor);
free(s->file.name);
return -1;
......
00-0_general
00-1_general
00-2_general
01_owner
02_class
03_rrttl
......
$ORIGIN .
ERROR=ZS_DOS_NEWLINE
------
ERROR=ZS_FILE_DIRECTORY
ERROR=ZS_FILE_DIR
------
......@@ -11,7 +11,7 @@ TMPDIR=$(test_tmpdir)
TESTS_DIR="$SOURCE"/data
ZSCANNER_TOOL="$BUILD"/zscanner-tool
plan 68
plan 69
mkdir -p "$TMPDIR"/includes/
for a in 1 2 3 4 5 6; do
......
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment