Package: rplay Version: 3.3.2-14 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 -o devrplay.so.3 devrplay.o -Wl,-soname -Wl,devrplay.so.3 -shared -L../librplay -lrplay -ldl error: conflicting function declarations "inet_addr" old definition in module rplay file /usr/include/arpa/inet.h line 34 unsigned int (const char *) new definition in module rptp file rptp.c line 67 unsigned long int (char *) Makefile:28: recipe for target 'devrplay.so.3' failed make[2]: *** [devrplay.so.3] Error 64 make[2]: Leaving directory '/srv/jenkins-slave/workspace/sid-goto-cc-rplay/rplay-3.3.2/devrplay' Makefile:12: recipe for target 'all' failed make[1]: *** [all] Error 2 Declaring library functions rather than using appropriate header files, like here http://sources.debian.net/src/rplay/3.3.2-14/librplay/rptp.c?hl=67#L67 http://sources.debian.net/src/rplay/3.3.2-14/rplayd/rplayd.h?hl=140#L140 in general isn't a great idea. (The code should be checked for further occurrences of inet_addr/inet_ntoa.) What's worse, however, is when those declarations do not match the system's ones. In this case, for all systems with sizeof(unsigned int)<sizeof(unsigned long int) there will be undefined behaviour as several bytes will take an arbitrary value. On big endian systems also the selection of bytes will be entirely wrong. Best, Michael
pgpbgZY7_ndBu.pgp
Description: PGP signature