[Dnsmasq-discuss] dnsmasq compile error: rfc1035.c:978:56: error: 'struct dnsmasq_daemon' has no member named 'workspacename'

Simon Kelley simon at thekelleys.org.uk
Tue Sep 28 22:45:26 UTC 2021


On 28/09/2021 10:36, John Thomson wrote:
> On Mon, 27 Sep 2021, at 20:21, Patrick Vorlicek wrote:
>> make[5]: Entering directory
>> '/root/openwrt/ea8500/build_dir/target-arm_cortex-a15+neon-vfpv4_musl_eabi/dnsmasq-full/dnsmasq-2.86/src'
>> arm-openwrt-linux-muslgnueabi-gcc -Os -pipe -fno-caller-saves -fno-plt
>> -fhonour-copts -Wno-error=unused-but-set-variable
>> -Wno-error=unused-result -mfloat-abi=hard
>> -fmacro-prefix-map=/root/openwrt/ea8500/build_dir/target-arm_cortex-a15+neon-vfpv4_musl_eabi/dnsmasq-full/dnsmasq-2.86=dnsmasq-2.86
>> -Wformat -Werror=format-security -DPIC -fpic -fstack-protector
>> -D_FORTIFY_SOURCE=1 -Wl,-z,now -Wl,-z,relro -flto
>> -I/root/openwrt/ea8500/staging_dir/toolchain-arm_cortex-a15+neon-vfpv4_gcc-11.2.0_musl_eabi/usr/include
>> -I/root/openwrt/ea8500/staging_dir/toolchain-arm_cortex-a15+neon-vfpv4_gcc-11.2.0_musl_eabi/include/fortify
>> -I/root/openwrt/ea8500/staging_dir/toolchain-arm_cortex-a15+neon-vfpv4_gcc-11.2.0_musl_eabi/include
>> -DHAVE_UBUS -DHAVE_POLL_H       -DHAVE_CONNTRACK -DNO_ID  -DNO_TFTP  
>> -DVERSION='"2.86"'     
>> -I/root/openwrt/ea8500/staging_dir/target-arm_cortex-a15+neon-vfpv4_musl_eabi/usr/include     
>> -c rfc1035.c
>> rfc1035.c: In function 'report_addresses':
>> rfc1035.c:978:56: error: 'struct dnsmasq_daemon' has no member named
>> 'workspacename'
>>   978 |               if (!extract_name(header, len, &p,
>> daemon->workspacename, 1, 0))
>>       |                                                        ^~
>> rfc1035.c:980:66: error: 'struct dnsmasq_daemon' has no member named
>> 'workspacename'
>>   980 |               if (safe_name(daemon->namebuff) &&
>> safe_name(daemon->workspacename))
>>       
>> |                                                                  ^~
>> rfc1035.c:981:92: error: 'struct dnsmasq_daemon' has no member named
>> 'workspacename'
>>   981 |                
>> ubus_event_bcast_connmark_allowlist_resolved(mark, daemon->namebuff,
>> daemon->workspacename, attl);
>>      
>> |                                                                                           
>> ^~
>> make[5]: ***
>> [/root/openwrt/ea8500/build_dir/target-arm_cortex-a15+neon-vfpv4_musl_eabi/dnsmasq-full/dnsmasq-2.86/Makefile:166:
>> rfc1035.o] Error 1
>> make[5]: Leaving directory
>> '/root/openwrt/ea8500/build_dir/target-arm_cortex-a15+neon-vfpv4_musl_eabi/dnsmasq-full/dnsmasq-2.86/src'
>>
>> It's a custom build of current master
>> (830c2e53781ade1817b03bbb8ece6291ae34df5d) with the following dnsmasq
>> config:
>>
>> # CONFIG_PACKAGE_dnsmasq is not set
>> # CONFIG_PACKAGE_dnsmasq-dhcpv6 is not set
>> CONFIG_PACKAGE_dnsmasq-full=y
>> CONFIG_PACKAGE_dnsmasq_full_dhcp=y
>> CONFIG_PACKAGE_dnsmasq_full_dhcpv6=y
>> # CONFIG_PACKAGE_dnsmasq_full_dnssec is not set
>> CONFIG_PACKAGE_dnsmasq_full_auth=y
>> CONFIG_PACKAGE_dnsmasq_full_ipset=y
>> CONFIG_PACKAGE_dnsmasq_full_conntrack=y
>> CONFIG_PACKAGE_dnsmasq_full_noid=y
>> # CONFIG_PACKAGE_dnsmasq_full_broken_rtc is not set
>> # CONFIG_PACKAGE_dnsmasq_full_tftp is not set
> 
> 
> Hi dnsmasq,
> 
> An email from the Openwrt-devel list looks like a bug was found with compile options:
> https://lists.openwrt.org/pipermail/openwrt-devel/2021-September/036515.html
> 
> This looks like a problem in dnsmasq, because dnsmasq is built with ubus and contrack,
> but without dnssec.
> If this is a valid configuration combination for dnsmasq, this is a bug.
> Otherwise, we will need to update the OpenWrt package so that these settings cannot occur together.
> 
> 
> daemon->workspacename is guarded by HAVE_DNSSEC in src/dnsmasq.h
> extern struct daemon {
>> #ifdef HAVE_DNSSEC
>    char *keyname; /* MAXDNAME size buffer */
>    char *workspacename; /* ditto */
> 
> but access to daemon->workspacename is guarded by
> HAVE_CONNTRACK && HAVE_UBUS in src/rfc1035.c
> 
> #if defined(HAVE_CONNTRACK) && defined(HAVE_UBUS)
>> void report_addresses(struct dns_header *header, size_t len, u32 mark)
>>                if (!extract_name(header, len, &p, daemon->workspacename, 1, 0))
> 
> 
> Cheers,
> 

This is a dnsmasq bug. I just pushed the fix to the git repo.


Question. Is there a simple way to install libubus on Ubuntu or Debian?
I have a script which tests a large m=number of plausible build-time
config combinations, but it doesn't test UBUS because there's no libubus
on my dev machine.


Cheers,

Simon.




More information about the Dnsmasq-discuss mailing list