Commit Graph

33060 Commits

Author SHA1 Message Date
Mark Andrews
be211cbf95 Warn if there is excessive NSEC3 iterations
(cherry picked from commit c9f5f8a059)
2021-04-29 17:44:47 +10:00
Mark Andrews
8e3c963172 Check dnssec-policy nsec3param iterations limit
(cherry picked from commit aa26cde2ae)
2021-04-29 17:44:46 +10:00
Mark Andrews
9324d2d295 Reduce nsec3 max iterations to 150
(cherry picked from commit 29126500d2)
2021-04-29 17:44:46 +10:00
Matthijs Mekking
1050d18664 Merge branch 'matthijs-nit-serve-stale-fixesv9_16' into 'v9_16'
Serve-stale nit fixes (9.16)

See merge request isc-projects/bind9!4950
2021-04-28 13:31:14 +00:00
Matthijs Mekking
4615cbb597 Serve-stale nit fixes
While working on the serve-stale backports, I noticed the following
oddities:

1. In the serve-stale system test, in one case we keep track of the
   time how long it took for dig to complete. In commit
   aaed7f9d8c, the code removed the
   exception to check for result == ISC_R_SUCCESS on stale found
   answers, and adjusted the test accordingly. This failed to update
   the time tracking accordingly. Move the t1/t2 time track variables
   back around the two dig commands to ensure the lookups resolved
   faster than the resolver-query-timeout.

2. We can remove the setting of NS_QUERYATTR_STALEOK and
   DNS_RDATASETATTR_STALE_ADDED on the "else if (stale_timeout)"
   code path, because they are added later when we know we have
   actually found a stale answer on a stale timeout lookup.

3. We should clear the NS_QUERYATTR_STALEOK flag from the client
   query attributes instead of DNS_RDATASETATTR_STALE_ADDED (that
   flag is set on the rdataset attributes).

4. In 'bin/named/config.c' we should set the configuration options
   in alpabetical order.

5. In the ARM, in the backports we have added "(stale)" between
   "cached" and "RRset" to make more clear a stale RRset may be
   returned in this scenario.

(cherry picked from commit 104b676235)
2021-04-28 13:53:52 +02:00
Michał Kępień
99157e2220 Merge branch 'michal/limit-logging-for-verbose-system-tests-v9_16' into 'v9_16'
[v9_16] Limit logging for verbose system tests

See merge request isc-projects/bind9!4948
2021-04-28 07:23:22 +00:00
Michał Kępień
c0b15db6da Warn when log files grow too big in system tests
Exerting excessive I/O load on the host running system tests should be
avoided in order to limit the number of false positives reported by the
system test suite.  In some cases, running named with "-d 99" (which is
the default for system tests) results in a massive amount of logs being
generated, most of which are useless.  Implement a log file size check
to draw developers' attention to overly verbose named instances used in
system tests.  The warning threshold of 200,000 lines was chosen
arbitrarily.

(cherry picked from commit 241e85ef0c)
2021-04-28 08:36:56 +02:00
Michał Kępień
13e97eb3c4 Prevent useless logging in the "tcp" system test
The regression test for CVE-2020-8620 causes a lot of useless messages
to be logged.  However, globally decreasing the log level for the
affected named instance would be a step too far as debugging information
may be useful for troubleshooting other checks in the "tcp" system test.
Starting a separate named instance for a single check should be avoided
when possible and thus is also not a good solution.  As a compromise,
run "rndc trace 1" for the affected named instance before starting the
regression test for CVE-2020-8620.

(cherry picked from commit 17e5c2a50e)
2021-04-28 08:36:56 +02:00
Michał Kępień
966ab29e32 Limit logging for verbose system tests
The system test framework starts all named instances with the "-d 99"
command line option (unless it is overridden by a named.args file in a
given instance's working directory).  This causes a lot of log messages
to be written to named.run files - currently over 5 million lines for a
single test suite run.  While debugging information preserved in the log
files is essential for troubleshooting intermittent test failures, some
system tests involve sending hundreds or even thousands of queries,
which causes the relevant log files to explode in size.  When multiple
tests (or even multiple test suites) are run in parallel, excessive
logging contributes considerably to the I/O load on the test host,
increasing the odds of intermittent test failures getting triggered.

Decrease the debug level for the seven most verbose named instances:

  - use "-d 3" for ns2 in the "cacheclean" system test (it is the lowest
    logging level at which the test still passes without the need to
    apply any changes to tests.sh),

  - use "-d 1" for the other six named instances.

This roughly halves the number of lines logged by each test suite run
while still leaving enough information in the logs to allow at least
basic troubleshooting in case of test failures.

This approach was chosen as it results in a greater decrease in the
number of lines logged than running all named instances with "-d 3",
without causing any test failures.

(cherry picked from commit 4a8d404876)
2021-04-28 08:36:56 +02:00
Diego dos Santos Fronza
daf5f2becb Merge branch '2626-deadlock-with-concurrent-rndc-addzone-rndc-delzone-commands-bp-v9_16' into 'v9_16'
Fix deadlock between rndc addzone/delzone/modzone

See merge request isc-projects/bind9!4944
2021-04-26 15:45:05 +00:00
Diego Fronza
8bd7b2e31d Add CHANGES note for GL #2626 2021-04-26 11:38:28 -03:00
Diego Fronza
6b37d3ac53 Add system test for the deadlock fix
The test spawns 4 parallel workers that keep adding, modifying and
deleting zones, the main thread repeatedly checks wheter rndc
status responds within a reasonable period.

While environment and timing issues may affect the test, in most
test cases the deadlock that was taking place before the fix used to
trigger in less than 7 seconds in a machine with at least 2 cores.
2021-04-26 11:35:48 -03:00
Diego Fronza
942b83d392 Fix deadlock between rndc addzone/delzone/modzone
It follows a description of the steps that were leading to the deadlock:

1. `do_addzone` calls `isc_task_beginexclusive`.

2. `isc_task_beginexclusive` waits for (N_WORKERS - 1) halted tasks,
   this blocks waiting for those (no. workers -1) workers to halt.
...
isc_task_beginexclusive(isc_task_t *task0) {
    ...
	while (manager->halted + 1 < manager->workers) {
		wake_all_queues(manager);
		WAIT(&manager->halt_cond, &manager->halt_lock);
	}
```

3. It is possible that in `task.c / dispatch()` a worker is running a
   task event, if that event blocks it will not allow this worker to
   halt.

4. `do_addzone` acquires `LOCK(&view->new_zone_lock);`,

5. `rmzone` event is called from some worker's `dispatch()`, `rmzone`
   blocks waiting for the same lock.

6. `do_addzone` calls `isc_task_beginexclusive`.

7. Deadlock triggered, since:
	- `rmzone` is wating for the lock.
	- `isc_task_beginexclusive` is waiting for (no. workers - 1) to
	   be halted
	- since `rmzone` event is blocked it won't allow the worker to halt.

To fix this, we updated do_addzone code to call isc_task_beginexclusive
before the lock is acquired, we postpone locking to the nearest required
place, same for isc_task_beginexclusive.

The same could happen with rndc modzone, so that was addressed as well.
2021-04-26 11:35:18 -03:00
Michał Kępień
a6f6e01881 Merge branch '2650-handle-soa-rrsigs-not-at-zone-apex-v9_16' into 'v9_16'
[v9_16] Handle RRSIG(SOA) RRsets not at zone apex

See merge request isc-projects/bind9!4943
2021-04-26 11:27:50 +00:00
Michał Kępień
ae5a84c82b Add CHANGES entry
(cherry picked from commit 47a7b042e5)
2021-04-26 12:45:28 +02:00
Michał Kępień
82a5b915de Test handling of non-apex RRSIG(SOA) RRsets
Add a check to the "dnssec" system test which ensures that RRSIG(SOA)
RRsets present anywhere else than at the zone apex are automatically
removed after a zone containing such RRsets is loaded.

(cherry picked from commit 24bf4b946a)
2021-04-26 12:45:28 +02:00
Mark Andrews
b25a1943ee Be more precise with the stopping conditions in zone_resigninc
If there happens to be a RRSIG(SOA) that is not at the zone apex
for any reason it should not be considered as a stopping condition
for incremental zone signing.

(cherry picked from commit b7cdc3583e)
2021-04-26 12:45:28 +02:00
Matthijs Mekking
b28c90ad79 Merge branch '2628-kasp-create-multiple-key-keyid-conflict-v9_16' into 'v9_16'
Check for keyid conflicts between new keys

See merge request isc-projects/bind9!4942
2021-04-26 09:32:19 +00:00
Matthijs Mekking
c599fb85a6 Changes and release notes for [#2628]
(cherry picked from commit b99ec65745)
2021-04-26 10:49:00 +02:00
Matthijs Mekking
f82d4f0474 Check for keyid conflicts between new keys
When the keymgr needs to create new keys, it is possible it needs to
create multiple keys. The keymgr checks for keyid conflicts with
already existing keys, but it should also check against that it just
created.

(cherry picked from commit 668301f138)
2021-04-26 10:48:06 +02:00
Michał Kępień
fd24d057a8 Merge branch '2634-test-tkey-gssapi-credential-conditionally-v9_16' into 'v9_16'
[v9_16] Test "tkey-gssapi-credential" conditionally

See merge request isc-projects/bind9!4939
2021-04-26 08:23:09 +00:00
Michał Kępień
fb90a34fd7 Test "--without-gssapi" in GitLab CI
GitLab CI pipelines do not currently include a Linux job that would have
GSSAPI support disabled.  Add the "--without-gssapi" option to the
./configure invocation on Debian 9 to address that deficiency and also
to continuously test that build-time switch.

(cherry picked from commit a3957af864)
2021-04-26 09:27:31 +02:00
Michał Kępień
cce29c3929 Test "tkey-gssapi-credential" conditionally
If "tkey-gssapi-credential" is set in the configuration and GSSAPI
support is not available, named will refuse to start.  As the test
system framework does not support starting named instances
conditionally, ensure that "tkey-gssapi-credential" is only present in
named.conf if GSSAPI support is available.

(cherry picked from commit 6feac68b50)
2021-04-26 09:27:31 +02:00
Mark Andrews
b010acdb52 Merge branch 'marka-shutdown-sync-v9_16' into 'v9_16'
Wait for named to start

See merge request isc-projects/bind9!4937
2021-04-25 23:15:42 +00:00
Mark Andrews
585e3543ca Wait for named to start
If we don't wait for named to finish starting, 'rndc stop' may
fail due to the listen limit being reached in named leading
to a false negative test

(cherry picked from commit 8d5870f9df)
2021-04-26 08:57:22 +10:00
Petr Špaček
da0f436512 Merge branch '2634-test-tkey-gssapi-credential-v9_16' into 'v9_16'
Add tests for the "tkey-gssapi-credential" option (v9.16)

See merge request isc-projects/bind9!4933
2021-04-23 08:13:07 +00:00
Petr Špaček
1d4fbe2511 Add tests for the "tkey-gssapi-credential" option
Four named instances in the "nsupdate" system test have GSS-TSIG support
enabled.  All of them currently use "tkey-gssapi-keytab".  Configure two
of them with "tkey-gssapi-credential" to test that option.

As "tkey-gssapi-keytab" and "tkey-gssapi-credential" both provide the
same functionality, no test modifications are required.  The difference
between the two options is that the value of "tkey-gssapi-keytab" is an
explicit path to the keytab file to acquire credentials from, while the
value of "tkey-gssapi-credential" is the name of the principal whose
credentials should be used; those credentials are looked up in the
keytab file expected by the Kerberos library, i.e. /etc/krb5.keytab by
default.  The path to the default keytab file can be overridden using by
setting the KRB5_KTNAME environment variable.  Utilize that variable to
use existing keytab files with the "tkey-gssapi-credential" option.

The KRB5_KTNAME environment variable should not interfere with the
"tkey-gssapi-keytab" option.  Nevertheless, rename one of the keytab
files used with "tkey-gssapi-keytab" to something else than the contents
of the KRB5_KTNAME environment variable in order to make sure that both
"tkey-gssapi-keytab" and "tkey-gssapi-credential" are actually tested.

(cherry picked from commit 1746d2e84a)
2021-04-23 09:19:45 +02:00
Mark Andrews
d4513539ff Merge branch '2625-the-shutdown-system-test-is-not-capturing-enough-v9_16' into 'v9_16'
Abort named if 'rndc stop' or 'kill TERM' has failed to shutdown

See merge request isc-projects/bind9!4932
2021-04-23 06:49:10 +00:00
Mark Andrews
4e36debc73 Abort named if 'rndc stop' or 'kill TERM' has failed to shutdown
(cherry picked from commit c3c7f5849c)
2021-04-23 15:14:57 +10:00
Ondřej Surý
d4dad8fe21 Merge branch '2637-threadsanitizer-lock-order-inversion-potential-deadlock-in-zone_refreshkeys-v9_16' into 'v9_16'
Fix lock-order-inversion (potential deadlock) in dns_resolver_createfetch

See merge request isc-projects/bind9!4920
2021-04-19 20:32:45 +00:00
Ondřej Surý
4bae6d8d73 Fix lock-order-inversion (potential deadlock) in dns_resolver_createfetch
There's a lock-order-inversion when running `zone_maintenance()` from
the timer while shutting down the server `shutdown_server()`.  This only
happens when the taskmgr scheduling is more relaxed and paralellized,
but the issue is real nevertheless.

The associated ThreadSanitizer warning:

    WARNING: ThreadSanitizer: lock-order-inversion (potential deadlock)
      Cycle in lock order graph: M1 (0x000000000001) => M2 (0x000000000000) => M1

      Mutex M2 acquired here while holding mutex M1 in thread T1:
	#0 pthread_mutex_lock <null>
	#1 dns_view_findzonecut lib/dns/view.c:1326:2
	#2 fctx_create lib/dns/resolver.c:5144:13
	#3 dns_resolver_createfetch lib/dns/resolver.c:10977:12
	#4 zone_refreshkeys lib/dns/zone.c:10830:13
	#5 zone_maintenance lib/dns/zone.c:11065:5
	#6 zone_timer lib/dns/zone.c:14652:2
	#7 task_run lib/isc/task.c:857:5
	#8 isc_task_run lib/isc/task.c:944:10
	#9 isc__nm_async_task lib/isc/netmgr/netmgr.c:730:24
	#10 process_netievent lib/isc/netmgr/netmgr.c
	#11 process_queue lib/isc/netmgr/netmgr.c:885:8
	#12 process_tasks_queue lib/isc/netmgr/netmgr.c:756:10
	#13 process_queues lib/isc/netmgr/netmgr.c:772:7
	#14 async_cb lib/isc/netmgr/netmgr.c:671:2
	#15 uv__async_io /home/ondrej/Projects/tsan/libuv/src/unix/async.c:163:5
	#16 uv__io_poll /home/ondrej/Projects/tsan/libuv/src/unix/linux-core.c:462:11
	#17 uv_run /home/ondrej/Projects/tsan/libuv/src/unix/core.c:392:5
	#18 nm_thread lib/isc/netmgr/netmgr.c:597:11
	#19 isc__trampoline_run lib/isc/trampoline.c:184:11

      Mutex M1 previously acquired by the same thread here:
	#0 pthread_mutex_lock <null>
	#1 zone_refreshkeys lib/dns/zone.c:10717:2
	#2 zone_maintenance lib/dns/zone.c:11065:5
	#3 zone_timer lib/dns/zone.c:14652:2
	#4 task_run lib/isc/task.c:857:5
	#5 isc_task_run lib/isc/task.c:944:10
	#6 isc__nm_async_task lib/isc/netmgr/netmgr.c:730:24
	#7 process_netievent lib/isc/netmgr/netmgr.c
	#8 process_queue lib/isc/netmgr/netmgr.c:885:8
	#9 process_tasks_queue lib/isc/netmgr/netmgr.c:756:10
	#10 process_queues lib/isc/netmgr/netmgr.c:772:7
	#11 async_cb lib/isc/netmgr/netmgr.c:671:2
	#12 uv__async_io /home/ondrej/Projects/tsan/libuv/src/unix/async.c:163:5
	#13 uv__io_poll /home/ondrej/Projects/tsan/libuv/src/unix/linux-core.c:462:11
	#14 uv_run /home/ondrej/Projects/tsan/libuv/src/unix/core.c:392:5
	#15 nm_thread lib/isc/netmgr/netmgr.c:597:11
	#16 isc__trampoline_run lib/isc/trampoline.c:184:11

      Mutex M1 acquired here while holding mutex M2 in thread T2:
	#0 pthread_mutex_lock <null>
	#1 dns_zone_flush lib/dns/zone.c:11443:2
	#2 view_flushanddetach lib/dns/view.c:657:5
	#3 dns_view_flushanddetach lib/dns/view.c:690:2
	#4 shutdown_server bin/named/server.c:10056:4
	#5 task_run lib/isc/task.c:857:5
	#6 isc_task_run lib/isc/task.c:944:10
	#7 isc__nm_async_task lib/isc/netmgr/netmgr.c:730:24
	#8 process_netievent lib/isc/netmgr/netmgr.c
	#9 process_queue lib/isc/netmgr/netmgr.c:885:8
	#10 process_tasks_queue lib/isc/netmgr/netmgr.c:756:10
	#11 process_queues lib/isc/netmgr/netmgr.c:772:7
	#12 async_cb lib/isc/netmgr/netmgr.c:671:2
	#13 uv__async_io /home/ondrej/Projects/tsan/libuv/src/unix/async.c:163:5
	#14 uv__io_poll /home/ondrej/Projects/tsan/libuv/src/unix/linux-core.c:462:11
	#15 uv_run /home/ondrej/Projects/tsan/libuv/src/unix/core.c:392:5
	#16 nm_thread lib/isc/netmgr/netmgr.c:597:11
	#17 isc__trampoline_run lib/isc/trampoline.c:184:11

      Mutex M2 previously acquired by the same thread here:
	#0 pthread_mutex_lock <null>
	#1 view_flushanddetach lib/dns/view.c:645:3
	#2 dns_view_flushanddetach lib/dns/view.c:690:2
	#3 shutdown_server bin/named/server.c:10056:4
	#4 task_run lib/isc/task.c:857:5
	#5 isc_task_run lib/isc/task.c:944:10
	#6 isc__nm_async_task lib/isc/netmgr/netmgr.c:730:24
	#7 process_netievent lib/isc/netmgr/netmgr.c
	#8 process_queue lib/isc/netmgr/netmgr.c:885:8
	#9 process_tasks_queue lib/isc/netmgr/netmgr.c:756:10
	#10 process_queues lib/isc/netmgr/netmgr.c:772:7
	#11 async_cb lib/isc/netmgr/netmgr.c:671:2
	#12 uv__async_io /home/ondrej/Projects/tsan/libuv/src/unix/async.c:163:5
	#13 uv__io_poll /home/ondrej/Projects/tsan/libuv/src/unix/linux-core.c:462:11
	#14 uv_run /home/ondrej/Projects/tsan/libuv/src/unix/core.c:392:5
	#15 nm_thread lib/isc/netmgr/netmgr.c:597:11
	#16 isc__trampoline_run lib/isc/trampoline.c:184:11

      Thread T2 (running) created by main thread at:
	#0 pthread_create <null>
	#1 isc_thread_create lib/isc/pthreads/thread.c:79:8
	#2 isc_nm_start lib/isc/netmgr/netmgr.c:303:3
	#3 create_managers bin/named/main.c:957:15
	#4 setup bin/named/main.c:1267:11
	#5 main bin/named/main.c:1558:2

      Thread T2 (running) created by main thread at:
	#0 pthread_create <null>
	#1 isc_thread_create lib/isc/pthreads/thread.c:79:8
	#2 isc_nm_start lib/isc/netmgr/netmgr.c:303:3
	#3 create_managers bin/named/main.c:957:15
	#4 setup bin/named/main.c:1267:11
	#5 main bin/named/main.c:1558:2

    SUMMARY: ThreadSanitizer: lock-order-inversion (potential deadlock) in __interceptor_pthread_mutex_lock

(cherry picked from commit 25d27851d8)
2021-04-19 22:31:37 +02:00
Ondřej Surý
bb926e36c8 Merge branch 'ondrej/cleanup-double-createinctx-constructors-v9_16' into 'v9_16'
Cleanup the isc_<*>mgr_createinc() constructors (v9.16)

See merge request isc-projects/bind9!4912
2021-04-19 14:19:39 +00:00
Ondřej Surý
97a5559ae3 Cleanup the isc_<*>mgr_createinc() constructors
Previously, the taskmgr, timermgr and socketmgr had a constructor
variant, that would create the mgr on top of existing appctx.  This was
no longer true and isc_<*>mgr was just calling isc_<*>mgr_create()
directly without any extra code.

This commit just cleans up the extra function.

(cherry picked from commit 3388ef36b3)
2021-04-19 15:57:40 +02:00
Ondřej Surý
3cdf026023 Merge branch 'ondrej/cleanup-ISCAPI-remnants-v9_16' into 'v9_16'
Cleanup the public vs private ISCAPI remnants (v9.16)

See merge request isc-projects/bind9!4917
2021-04-19 13:57:07 +00:00
Ondřej Surý
08055b742c Cleanup the public vs private ISCAPI remnants
Since all the libraries are internal now, just cleanup the ISCAPI remnants
in isc_socket, isc_task and isc_timer APIs.  This means, there's one less
layer as following changes have been done:

 * struct isc_socket and struct isc_socketmgr have been removed
 * struct isc__socket and struct isc__socketmgr have been renamed
   to struct isc_socket and struct isc_socketmgr
 * struct isc_task and struct isc_taskmgr have been removed
 * struct isc__task and struct isc__taskmgr have been renamed
   to struct isc_task and struct isc_taskmgr
 * struct isc_timer and struct isc_timermgr have been removed
 * struct isc__timer and struct isc__timermgr have been renamed
   to struct isc_timer and struct isc_timermgr
 * All the associated code that dealt with typing isc_<foo>
   to isc__<foo> and back has been removed.

(cherry picked from commit 16fe0d1f41)
2021-04-19 15:24:10 +02:00
Ondřej Surý
f4cf25618e Merge branch 'each-cleanup-dns_client-v9_16' into 'v9_16'
remove dns_client_update() and related code (v9.16)

See merge request isc-projects/bind9!4914
2021-04-19 13:21:22 +00:00
Evan Hunt
49d9c1abd6 Add CHANGES note for [GL !4835]
(cherry picked from commit 07e349de3c)
2021-04-19 14:32:53 +02:00
Mark Andrews
9d85c56772 properly initialise resarg->lock 2021-04-19 14:32:53 +02:00
Ondřej Surý
579b8bec75 Fixup win32 paths for moved bin/tests/system/resolve
When resolve.c was moved from lib/samples to bin/tests/system, the
resolve.vcxproj.in would still contain old paths to the directory
root. This commit adds one more ..\ to match the directory depth.

Additionally, fixup the path in BINDInstall.vcxproj.in to be
bin/tests/system and not bin/tests/samples.

(cherry picked from commit f14e678624)
2021-04-19 14:32:53 +02:00
Evan Hunt
28511bfcfd move samples/resolve.c to bin/tests/system
"resolve" is used by the resolver system tests, and I'm not
certain whether delv exercises the same code, so rather than
remove it, I moved it to bin/tests/system.

(cherry picked from commit d0ec7d1f33)
2021-04-19 14:32:53 +02:00
Ondřej Surý
dac0950381 Merge branch '2636-timing-race-in-setnsec3param-task-v9_16' into 'v9_16'
Fix task timing race in setnsec3param() (v9.16)

See merge request isc-projects/bind9!4915
2021-04-19 11:26:35 +00:00
Evan Hunt
65777fcdf4 remove sample-async
sample code for export libraries is no longer needed and
this code is not used for any internal tests. also, sample-gai.c
had already been removed but there were some dangling references.

(cherry picked from commit 056afe7bdc)
2021-04-19 13:25:48 +02:00
Evan Hunt
2f7f47bd99 rename dns_client_createx() to dns_client_create()
there's no longer a need to use an alternate name.

(cherry picked from commit 568d455c99)
2021-04-19 13:25:48 +02:00
Evan Hunt
b4aaf6b83d remove dns_client_request() and related code
continues the cleanup of dns_client started in the previous commit.

(cherry picked from commit 1beb05f3e2)
2021-04-19 13:25:48 +02:00
Evan Hunt
131bbb9bbe remove dns_client_update() and related code
the libdns client API is no longer being maintained for
external use, we can remove the code that isn't being used
internally, as well as the related tests.

(cherry picked from commit fb2a352e7c)
2021-04-19 13:25:48 +02:00
Ondřej Surý
cb6bfd1e9c Fix task timing race in setnsec3param()
When setnsec3param() is schedule from zone_postload() there's no
guarantee that `zone->db` is not `NULL` yet.  Thus when the
setnsec3param() is called, we need to check for `zone->db` existence and
reschedule the task, because calling `rss_post()` on a zone with empty
`.db` ends up with no-op (the function just returns).

(cherry picked from commit 0127ba6472)
2021-04-19 11:48:39 +02:00
Michał Kępień
60c8ace726 Merge branch '2634-fix-handling-undefined-GSS_SPNEGO_MECHANISM-macro' into 'v9_16'
Fix handling undefined GSS_SPNEGO_MECHANISM macro

See merge request isc-projects/bind9!4902
2021-04-16 12:50:53 +00:00
Michał Kępień
381202629e Add CHANGES entry 2021-04-16 14:40:06 +02:00
Michał Kępień
648ef3a2b4 Fix handling undefined GSS_SPNEGO_MECHANISM macro
BIND 9 attempts to look up GSSAPI OIDs for the Kerberos 5 and SPNEGO
mechanisms in the relevant header files provided by the Kerberos/GSSAPI
library used.  Due to the differences between various Kerberos/GSSAPI
implementations, if any of the expected preprocessor macros
(GSS_KRB5_MECHANISM, GSS_SPNEGO_MECHANISM) is not defined in the header
files provided by the library used, the code in lib/dns/gssapictx.c
defines its own version of each missing macro, so that BIND 9 can
attempt to use the relevant security mechanisms anyway.

Commit a875dcc669, which contains a
partial backport of the changes introduced in commit
978c7b2e89, left a block of code in the
lib/dns/dst_internal.h header which defines the GSS_SPNEGO_MECHANISM
preprocessor macro to NULL if it is not defined by any header file
provided by the Kerberos/GSSAPI library used.  This causes the
gss_add_oid_set_member() call in the mech_oid_set_create() helper
function to always return an error.  This in turn causes the
dst_gssapi_acquirecred() function to also always return an error, which
ultimately prevents any named instance whose configuration includes the
"tkey-gssapi-credential" option from starting.

Remove the offending conditional definition of the GSS_SPNEGO_MECHANISM
preprocessor macro from lib/dns/dst_internal.h, so that a proper GSSAPI
OID is assigned to that macro in lib/dns/gssapictx.c when the
Kerberos/GSSAPI library used does not define it.
2021-04-16 14:40:06 +02:00
Michał Kępień
87f1db2ce4 Roll back unnecessary libtool updates
Commit a875dcc669 inadvertently included
libtool updates which were unrelated to the removal of custom SPNEGO
code.  Roll these updates back to avoid confusion.
2021-04-16 14:40:06 +02:00