[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#750241: qrq: Conflicting declarations of function write_audio to cause undefined behaviour



Package: qrq
Version: 0.3.1-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 -Wall -o qrq qrq.o pulseaudio.o -lm -Wl,-z,relro -lpthread -lpulse-simple -lpulse -lncurses

error: conflicting function declarations "write_audio"
old definition in module qrq file pulseaudio.h line 25
void (void *, signed int *, unsigned long int)
new definition in module pulseaudio file pulseaudio.c line 66
void (void *bla, signed int *in, signed int size)
Makefile:65: recipe for target 'qrq' failed
make[1]: *** [qrq] Error 64
make[1]: Leaving directory '/srv/jenkins-slave/workspace/sid-goto-cc-qrq/qrq-0.3.1'
dh_auto_build: make -j1 returned exit code 2
debian/rules:13: recipe for target 'build' failed
make: *** [build] Error 2

For all platforms with sizeof(int)<sizeof(long) undefined behaviour will appear
in (at least) one of two ways: either the value will be truncated in an
arbitrary way, if it does not fit in a positive signed int; even if the value
fits that range, big endian systems will extract the wrong bytes.

Adjusting the declaration in pulseaudio.h should solve the problem, assuming all
values passed to the function actually fit into a signed int.

Best,
Michael

Attachment: pgpud267mKZiQ.pgp
Description: PGP signature


Reply to: