Commit Graph
27905 Commits
Author SHA1 Message Date
Michał Kępień c5500efc77 Add OpenBSD to GitLab CI
Ensure BIND can be tested on OpenBSD in GitLab CI to more quickly catch
build and test errors on that operating system.

Some notes:

  - While GCC is packaged for OpenBSD, only old versions (4.2.1, 4.9.4)
    are readily available and none of them is the default system
    compiler, so we are only doing Clang builds in GitLab CI.

  - Unit tests are currently not run on OpenBSD because it ships with an
    old version of kyua which does not handle skipped tests properly.
    These jobs will be added when we move away from using kyua in the
    future as the test code itself works fine.

  - All OpenBSD jobs are run inside QEMU virtual machines, using GitLab
    Runner Custom executor.

(cherry picked from commit 07d2fcb544)
2019-10-15 16:38:37 +02:00
Michał Kępień 601de34899 Work around an OpenBSD "make" quirk
Consider the following Makefile:

    foo:
    	false

On OpenBSD, the following happens for this Makefile:

  - "make foo" returns 1,
  - "make -k foo" returns 0,
  - "make -k -j6 foo" returns 1.

However, if the .NOTPARALLEL pseudo-target is added to this Makefile,
"make -k -j6 foo" will return 0 as well.

Since bin/tests/Makefile contains the .NOTPARALLEL pseudo-target,
running "make -k -j6 test" from bin/tests/ on OpenBSD prevents any
errors from being reported through that command's exit code.

Work around the issue by running "make -k -j6 test" in the
bin/tests/system/ directory instead as bin/tests/system/Makefile does
not contain the .NOTPARALLEL pseudo-target and thus things work as
expected there.

(cherry picked from commit 6b5426e1a7)
2019-10-15 16:38:36 +02:00
Mark Andrews 4515107e5c Merge branch 'matthijs/bind9-1143-minor-doc-issue-parsing-incomplete-ipv4-v9_11' into 'v9_11'
Matthijs/bind9 1143 minor doc issue parsing incomplete ipv4 v9 11

See merge request isc-projects/bind9!2457
2019-10-14 07:30:35 -04:00
Mark Andrews 42f998ee14 Detect partial prefixes / incomplete IPv4 address in acls.
(cherry picked from commit fb87e669fb)
2019-10-14 22:12:16 +11:00
Ondřej Surý 3aefc17d38 Merge branch 'ondrej/1-week-artifact-expiration-v9_11' into 'v9_11'
Synchronize the lifetime of artifact to 1 week

See merge request isc-projects/bind9!2450
2019-10-10 02:09:49 -04:00
Ondřej Surý fd146b80e4 Synchronize the lifetime of artifact to 1 week
(cherry picked from commit 85c0bede78)
2019-10-10 07:48:37 +02:00
Mark Andrews 3f5e52d923 Merge branch 'marka-fix-needs' into 'v9_11'
Marka fix needs

See merge request isc-projects/bind9!2444
2019-10-04 01:41:25 -04:00
Mark Andrews 26e802853e fix docs:sid:amd64: needs 2019-10-04 15:11:41 +10:00
Mark Andrews f82eb514df Merge branch 'marka-cppcheck-fixes-v9_12-and-v9_14-v9_11' into 'v9_11'
Address cppcheck reports (v9_11/v9_14)

See merge request isc-projects/bind9!2443
2019-10-04 00:48:31 -04:00
Mark Andrews d2c51b9c4b Address cppcheck reports
(cherry picked from commit fcebc4f15b)
2019-10-04 14:34:21 +10:00
Mark Andrews 5082bda2a0 Merge branch 'marka-silence-clang-v9_11' into 'v9_11'
silence clang warning by using local variable.

See merge request isc-projects/bind9!2442
2019-10-03 21:54:42 -04:00
Mark Andrews 6a31216867 silence clang warning by using local variable.
'isc_commandline_index' is a global variable so it can theoretically
change result between if expressions.  Save 'argv[isc_commandline_index]'
to local variable 'arg1' and use 'arg1 == NULL' in if expressions
instead of 'argc < isc_commandline_index + 1'.  This allows clang
to correctly determine what code is reachable.

(cherry picked from commit 1b27ab8642)
2019-10-04 11:38:21 +10:00
Ondřej Surý 010b831a75 Merge branch 'ondrej/fix-docs-autoreconf-v9_11' into 'v9_11'
Fix docs -> autoreconf dependencies in the .gitlab-ci.yml (v9_11)

See merge request isc-projects/bind9!2438
2019-10-03 09:59:03 -04:00
Ondřej Surý 43bea8a00e Fix the triggering rule for autoreconf job (take 2) 2019-10-03 15:41:06 +02:00
Ondřej Surý 99e99a2662 Fix docs -> autoreconf dependencies in the .gitlab-ci.yml 2019-10-03 15:41:05 +02:00
Ondřej Surý 9bc6936650 Merge branch 'ondrej/enable-cppcheck-v9_11' into 'v9_11'
Enable Cppcheck for v9_11 branch

See merge request isc-projects/bind9!2433
2019-10-03 09:23:15 -04:00
Ondřej Surý 8e02b7fbfc Use util/suppressions.txt for Cppcheck suppressions list 2019-10-03 14:42:30 +02:00
Ondřej Surý fc48cdf6a9 lib/lwres/getipnode.c: Resolve possible Null pointer dereference (from Cppcheck) 2019-10-03 14:42:30 +02:00
Ondřej Surý b06f36a726 lib/isc/include/isc/stdatomic.h: Suppress preprocessorErrorDirective error from Cppcheck 2019-10-03 14:21:47 +02:00
Ondřej Surý 61b3ab76a5 lib/isc/random.c: Suppress preprocessorErrorDirective error from Cppcheck 2019-10-03 14:21:47 +02:00
Ondřej Surý d26c36a338 Remove randomly scattered additional style check suppressions that caused unmatchedSuppression
(cherry picked from commit a0d3614a60)
2019-10-03 14:21:47 +02:00
Ondřej Surý 7f0152632f lib/ns/query.c: Fix invalid order of DbC checks that could cause dereference before NULL check
(cherry picked from commit d1f035bbba)
2019-10-03 14:21:47 +02:00
Ondřej Surý b31143e249 lib/ns/interfacemgr.c: Fix invalid order of DbC checks that could cause dereference before NULL check
(cherry picked from commit 033f3eb580)
2019-10-03 14:21:46 +02:00
Ondřej Surý 99a71e6efa lib/isccfg/parser.c: Fix invalid order of DbC checks that could cause dereference before NULL check
(cherry picked from commit f855f09a55)
2019-10-03 14:21:46 +02:00
Ondřej Surý d2ca36346f lib/isccfg/aclconf.c: Suppress nullPointerRedundantCheck false positive
(cherry picked from commit 09232213d7)
2019-10-03 14:21:46 +02:00
Ondřej Surý 8f23f39fee lib/isc/unix/socket.c: Suppress preprocessorErrorDirective error from Cppcheck
(cherry picked from commit 026cf2ff4f)
2019-10-03 14:21:46 +02:00
Ondřej Surý 0e8e4c9174 lib/isc/task.c: Fix invalid order of DbC checks that could cause dereference before NULL check
(cherry picked from commit c662969da1)
2019-10-03 14:21:46 +02:00
Ondřej Surý 91999a143d lib/isc/pkc11.c: Fix possible NULL pointer dereference in push_attribute()
(cherry picked from commit e8948fd9b4)
2019-10-03 14:21:46 +02:00
Ondřej Surý 7accb1029f lib/isc/buffer.c: Fix invalid order of DbC checks that could cause dereference before NULL check
(cherry picked from commit e9f30fc211)
2019-10-03 14:21:46 +02:00
Ondřej Surý 1506ad6e76 lib/dns/tsig.c: Suppress Cppcheck false positive error uninitStructMember
(cherry picked from commit 8f2ad12d0a)
2019-10-03 14:21:46 +02:00
Ondřej Surý 49d017aa75 lib/dns/tests/rbt_serialize_test.c: Fix dereference before DbC check
(cherry picked from commit 14c174d921)
2019-10-03 14:21:46 +02:00
Ondřej Surý b20df811fb Instead of declaring unused va_list, just don't declare it at all
(cherry picked from commit 269d507ccc)
2019-10-03 14:21:46 +02:00
Ondřej Surý d76c92bba7 lib/dns/rdatalist.c: Fix dereference before DbC check
(cherry picked from commit 5fc7e98d29)
2019-10-03 14:21:46 +02:00
Ondřej Surý 8a01f18958 lib/dns/rdata/*/*.c: Silence false positive nullPointerRedundantCheck warning from Cppcheck
Cppcheck gets confused by:

void bar(void *arg) {
    foo *data = arg;
    REQUIRE(source != NULL);
    REQUIRE(data->member != NULL);
}

and for consistency the DbC check needs to be changed to

void bar(void *arg) {
    foo *data = arg;
    REQUIRE(data != NULL);
    REQUIRE(data->member != NULL);
}

(cherry picked from commit 66af8713d8)
2019-10-03 14:21:46 +02:00
Ondřej Surý 56a2cba642 lib/dns/rdata.c: Silence false positive nullPointerRedundantCheck warning from Cppcheck
(cherry picked from commit e68333aa67)
2019-10-03 14:21:46 +02:00
Ondřej Surý c1df74f9c9 lib/dns/rbtdb.c: Add DbC check to safely dereference rbtdb in rbt_datafixer()
(cherry picked from commit d508ce4036)
2019-10-03 14:21:46 +02:00
Ondřej Surý d04cc31c6e lib/dns/rbt.c: Suppress nullPointerRedundantCheck warnings from Cppcheck
(cherry picked from commit 8be5c3fcfc)
2019-10-03 14:21:46 +02:00
Ondřej Surý f8200d8802 lib/dns/name.c: Fix dereference before DbC check reported by Cppcheck
(cherry picked from commit 0f5860aad3)
2019-10-03 14:21:46 +02:00
Ondřej Surý 68ae992b71 lib/dns/gssapi_link.c: Fix %d -> %u formatting when printing unsigned integers
(cherry picked from commit cea871464f)
2019-10-03 14:21:46 +02:00
Ondřej Surý 601380c4ed Fix passing NULL after the last typed argument to a variadic function leads to undefined behaviour.
From Cppcheck:

Passing NULL after the last typed argument to a variadic function leads to
undefined behaviour.  The C99 standard, in section 7.15.1.1, states that if the
type used by va_arg() is not compatible with the type of the actual next
argument (as promoted according to the default argument promotions), the
behavior is undefined.  The value of the NULL macro is an implementation-defined
null pointer constant (7.17), which can be any integer constant expression with
the value 0, or such an expression casted to (void*) (6.3.2.3). This includes
values like 0, 0L, or even 0LL.In practice on common architectures, this will
cause real crashes if sizeof(int) != sizeof(void*), and NULL is defined to 0 or
any other null pointer constant that promotes to int.  To reproduce you might be
able to use this little code example on 64bit platforms. If the output includes
"ERROR", the sentinel had only 4 out of 8 bytes initialized to zero and was not
detected as the final argument to stop argument processing via
va_arg(). Changing the 0 to (void*)0 or 0L will make the "ERROR" output go away.

void f(char *s, ...) {
    va_list ap;
    va_start(ap,s);
    for (;;) {
        char *p = va_arg(ap,char*);
        printf("%018p, %s\n", p, (long)p & 255 ? p : "");
        if(!p) break;
    }
    va_end(ap);
}

void g() {
    char *s2 = "x";
    char *s3 = "ERROR";

    // changing 0 to 0L for the 7th argument (which is intended to act as
    // sentinel) makes the error go away on x86_64
    f("first", s2, s2, s2, s2, s2, 0, s3, (char*)0);
}

void h() {
    int i;
    volatile unsigned char a[1000];
    for (i = 0; i<sizeof(a); i++)
        a[i] = -1;
}

int main() {
    h();
    g();
    return 0;
}

(cherry picked from commit d8879af877)
2019-10-03 14:21:46 +02:00
Ondřej Surý 034df34d92 lib/dns/ecdb.c: Fix couple of DbC conditions reported by Cppcheck
(cherry picked from commit 91cc6b9eb9)
2019-10-03 14:21:46 +02:00
Ondřej Surý 8dea1118c7 Fix the constification of the dns_name_t * result variable for dns_tsig_identity()
(cherry picked from commit fa7475b77a)
2019-10-03 14:21:46 +02:00
Ondřej Surý aa5889959d bin/named/zoneconf.c: Reset dns_name_t *tsig on every view iteration
(cherry picked from commit 43925b2a8b)
2019-10-03 10:01:45 +02:00
Ondřej Surý d16e4994e3 Change dns_tsigkey_identity from macro to a function and const argument and result
(cherry picked from commit 2e304b0b7f)
2019-10-03 09:55:30 +02:00
Ondřej Surý 7f8bd90ad4 bin/named/server.c: Fix couple of DbC conditions reported by Cppcheck
(cherry picked from commit 476277a6e6)
2019-10-03 09:54:01 +02:00
Ondřej Surý fe9194880e bin/dig/dighost.c: Fix REQUIRE(!= NULL) condition after the variable has been dereferenced
(cherry picked from commit 9366ca769f)
2019-10-03 09:52:48 +02:00
Ondřej Surý a70bde79e1 bin/delv/delv.c: Fix invalid logic operation in REQUIRE() condition
(cherry picked from commit 9ab16d10d4)
2019-10-03 09:51:57 +02:00
Ondřej Surý bd5008fff5 Add Cppcheck job to the CI
This MR changes the default Debian sid build to wrap make with bear
that creates compilation database and use the compilation database
to run Cppcheck on the source files systematically.

The job is currently set to be allowed to fail as it will take some
time to fix all the Cppcheck detected issues.

(cherry picked from commit f55dc51f42)
2019-10-03 09:51:54 +02:00
Mark Andrews 2a4a5480f9 Merge branch 'marka-cppcheck-v9_11' into 'v9_11'
Address cppcheck warnings and errors in v9_11

See merge request isc-projects/bind9!2421
2019-10-01 19:54:14 -04:00
Mark Andrews 34a3f41e9e add CHANGES 2019-10-02 09:25:00 +10:00