Package: nsca-ng
Version: 1.2-1
Usertags: goto-cc

During a rebuild of all Debian packages in a clean sid chroot (using cowbuilder
and pbuilder) the build failed with the following error. Please note that we
use our research compiler tool-chain (using tools from the cbmc package), which
permits extended reporting on type inconsistencies at link time.

[...]
gcc -std=gnu99  -g -O2 -fstack-protector --param=ssp-buffer-size=4 -Wformat 
-Werror=format-security    -Wl,-z,relro -o nsca-ng auth.o conf.o fifo.o hash.o 
nsca-ng.o server.o ../common/libcommon.a ../../lib/libcompat.a -lconfuse -lev 
-lssl -lcrypto -lrt -lbsd  ../../lib/pidfile/libpidfile.a 

error: conflicting function declarations "pidfile_open"
old definition in module nsca-ng file /usr/include/bsd/libutil.h line 63
struct pidfh * (const char *, unsigned int, signed int *)
new definition in module pidfile file pidfile.c line 112
struct pidfh * (const char *path, unsigned int mode, signed int *pidptr)

reason for conflict in struct pidfh in second member:

unsigned int <padding>
char [4097l]
Makefile:364: recipe for target 'nsca-ng' failed
make[4]: *** [nsca-ng] Error 64
make[4]: Leaving directory 
'/srv/jenkins-slave/workspace/sid-goto-cc-nsca-ng/nsca-ng-1.2/src/server'
Makefile:322: recipe for target 'all-recursive' failed
make[3]: *** [all-recursive] Error 1

It seems the shipped version implementing struct pidfh and the one from system
libutil.h don't match:

http://sources.debian.net/src/nsca-ng/1.2-1/lib/pidfile/pidfile.c?hl=61#L59
http://sources.debian.net/src/libbsd/0.6.0-2/include/bsd/libutil.h?hl=51#L49

Notably, the pf_path member will differ in alignment on all systems where
sizeof(char*)>sizeof(int). This might presently be safe insofar as nsca-ng.c
does not attempt to access any of the pidfh members directly, but only maintains
a pointer. (And the linker would hopefully choose the implementation from system
libbsd anyway.)

Yet it seems to be worth fixing either the implementation in pidfile.c or
configure/the Makefile such as not to include libpidfile.a when libbsd is
available.

Best,
Michael

Attachment: pgpzmvvfCvwef.pgp
Description: PGP signature

Reply via email to