#228 build failures against bind 9.18.24 and 9.16.48
Closed: fixed 3 months ago by abbra. Opened 3 months ago by slev.

Bind 9.16.48 and 9.18.24 closes a lot of CVEs, one of them was CVE-2023-4408.

9.16.48 change (added new field isc_ht_t *ht to dns_name):
https://gitlab.isc.org/isc-projects/bind9/-/commit/608707b4f5b473e416563bfe0d43e26d6dc4a5c6#d2f7ec9b0041cbd24e6f67688266ac1be90d9970

and same change for 9.18.24:
https://gitlab.isc.org/isc-projects/bind9/-/commit/849c05adf43870ddcdc816ee7f6159e06e843d21#d2f7ec9b0041cbd24e6f67688266ac1be90d9970

This leads to build error:

libtool: compile:  x86_64-alt-linux-gcc -DHAVE_CONFIG_H -I. -I.. -Wall -Wextra -Werror -std=gnu99 -O2 -I/usr/include/bind9 -pipe -frecord-gcc-switches -Wall -g -O2 -flto=auto -fvisibility=hidden -fno-delete-null-pointer-checks -std=gnu11 -c mldap.c  -fPIC -DPIC -o .libs/ldap_la-mldap.o
mldap.c:64:1: error: missing initializer for field 'ht' of 'dns_name_t' {aka 'struct dns_name'} [-Werror=missing-field-initializers]
   64 | };
      | ^
In file included from /usr/include/bind9/dns/fixedname.h:55,
                 from /usr/include/bind9/dns/db.h:60,
                 from mldap.c:21:
/usr/include/bind9/dns/name.h:115:19: note: 'ht' declared here
  115 |         isc_ht_t *ht;
      |                   ^~
cc1: all warnings being treated as errors
make[2]: *** [Makefile:641: ldap_la-mldap.lo] Error 1

Another build error against bind 9.18.24:

/bin/sh ../libtool  --tag=CC   --mode=compile x86_64-alt-linux-gcc -DHAVE_CONFIG_H -I.
 -I..    -Wall -Wextra -Werror -std=gnu99 -O2 -I/usr/include/bind9 -pipe -frecord-gcc-
switches -Wall -g -O2 -flto=auto -fvisibility=hidden -fno-delete-null-pointer-checks -
std=gnu11 -c -o ldap_la-syncrepl.lo `test -f 'syncrepl.c' || echo './'`syncrepl.c
libtool: compile:  x86_64-alt-linux-gcc -DHAVE_CONFIG_H -I. -I.. -Wall -Wextra -Werror
 -std=gnu99 -O2 -I/usr/include/bind9 -pipe -frecord-gcc-switches -Wall -g -O2 -flto=au
to -fvisibility=hidden -fno-delete-null-pointer-checks -std=gnu11 -c syncrepl.c  -fPIC
 -DPIC -o .libs/ldap_la-syncrepl.o
In file included from /usr/include/bind9/isc/atomic.h:19,
                 from /usr/include/bind9/isc/types.h:16,
                 from /usr/include/bind9/isc/condition.h:26,
                 from syncrepl.c:7:
/usr/include/bind9/isc/stdatomic.h:29:2: error: #error "isc/stdatomic.h does not suppo
rt your compiler"
   29 | #error "isc/stdatomic.h does not support your compiler"
      |  ^~~~~
make[2]: *** [Makefile:676: ldap_la-syncrepl.lo] Error 1

See,
https://gitlab.isc.org/isc-projects/bind9/-/issues/4467


Metadata Update from @abbra:
- Issue assigned to abbra

3 months ago

@pemensik any idea about stdatomic.h change?

@abbra I have seen that isc/stdatomic.h error already. I think that requires some special order of used includes. Some rely on platform specific defines to be included beforehand. I think you need to define HAVE_STDATOMIC_H before inclusion of any #include <isc/atomic.h>. That is what is hidden in bind9 config.h, which does not seem to be exported anywhere.

Do what I did for all files needing it in commit 131ddb9, for syncrepl.c also, and any other new files needing it. Just move #include "dyndb-config.h" above <isc/*.h> includes.

Thanks, I pushed one more commit to my PR.

Metadata Update from @abbra:
- Issue close_status updated to: fixed
- Issue status updated to: Closed (was: Open)

3 months ago

Login to comment on this ticket.

Metadata
Related Pull Requests
  • #229 Merged 3 months ago