Bug#751348: qutecom: Inconsistent definition of ORTP_INET6 to cause conflicting types

Michael Tautschnig mt at debian.org
Wed Jun 11 22:29:57 UTC 2014


Package: qutecom
Version: 2.2.1+dfsg1-5
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.

[...]
/usr/bin/g++  -fPIC -g -O2 -fstack-protector --param=ssp-buffer-size=4 -Wformat -Werror=format-security -Wall -D_FORTIFY_SOURCE=2 -O2 -g -DNDEBUG -lpthread -Wl,--export-dynamic -lgmodule-2.0 -pthread -lglib-2.0 -lgthread-2.0 -pthread -lglib-2.0 -Wl,-z,relro -shared -Wl,-soname,libphapi.so -o libphapi.so CMakeFiles/phapi.dir/aec2.o CMakeFiles/phapi.dir/nortel.o CMakeFiles/phapi.dir/owpl_adapter.o CMakeFiles/phapi.dir/owpl_plugin.o CMakeFiles/phapi.dir/owpl_log.o CMakeFiles/phapi.dir/phapi-old.o CMakeFiles/phapi.dir/phapi.o CMakeFiles/phapi.dir/phaudiodriver.o CMakeFiles/phapi.dir/phcodec.o CMakeFiles/phapi.dir/phevents.o CMakeFiles/phapi.dir/phlog.o CMakeFiles/phapi.dir/phmbuf.o CMakeFiles/phapi.dir/phmedia-audio-file.o CMakeFiles/phapi.dir/phmedia-audio.o CMakeFiles/phapi.dir/phmedia.o CMakeFiles/phapi.dir/phrecorder.o CMakeFiles/phapi.dir/phresample.o CMakeFiles/phapi.dir/phvline.o CMakeFiles/phapi.dir/tonegen.o CMakeFiles/phapi.dir/wav.o CMakeFiles/phapi.dir/wlm.o CMakeFiles/phapi.dir/phcodec-h263.o CMakeFiles/phapi.dir/phcodec-h263plus.o CMakeFiles/phapi.dir/phcodec-h263flv1.o CMakeFiles/phapi.dir/phcodec-h264.o CMakeFiles/phapi.dir/phcodec-mpeg4.o CMakeFiles/phapi.dir/phmedia-video.o CMakeFiles/phapi.dir/phmedia-video-control.o CMakeFiles/phapi.dir/phmedia-video-bwcontrol.o CMakeFiles/phapi.dir/phcodec-avcodec-wrapper.o CMakeFiles/phapi.dir/phmedia-alsa.o CMakeFiles/phapi.dir/phmedia-oss.o  -L/srv/jenkins-slave/workspace/sid-goto-cc-qutecom/qutecom-2.2.1+dfsg1/obj-x86_64-linux-gnu/wifo/libosip2  -L/srv/jenkins-slave/workspace/sid-goto-cc-qutecom/qutecom-2.2.1+dfsg1/obj-x86_64-linux-gnu/wifo/owbase  -L/srv/jenkins-slave/workspace/sid-goto-cc-qutecom/qutecom-2.2.1+dfsg1/obj-x86_64-linux-gnu/wifo/owsl  -L/srv/jenkins-slave/workspace/sid-goto-cc-qutecom/qutecom-2.2.1+dfsg1/obj-x86_64-linux-gnu/wifo/eXosip/transport_manager  -L/srv/jenkins-slave/workspace/sid-goto-cc-qutecom/qutecom-2.2.1+dfsg1/obj-x86_64-linux-gnu/wifo/sVoIP  -L/srv/jenkins-slave/workspace/sid-goto-cc-qutecom/qutecom-2.2.1+dfsg1/obj-x86_64-linux-gnu/wifo/eXosip  -L/srv/jenkins-slave/workspace/sid-goto-cc-qutecom/qutecom-2.2.1+dfsg1/obj-x86_64-linux-gnu/wifo/ortp  -L/srv/jenkins-slave/workspace/sid-goto-cc-qutecom/qutecom-2.2.1+dfsg1/obj-x86_64-linux-gnu/wifo/phapi/stun  -L/srv/jenkins-slave/workspace/sid-goto-cc-qutecom/qutecom-2.2.1+dfsg1/obj-x86_64-linux-gnu/wifo/phapi/gsm  -L/srv/jenkins-slave/workspace/sid-goto-cc-qutecom/qutecom-2.2.1+dfsg1/obj-x86_64-linux-gnu/libs/owutil/cutil  -L/srv/jenkins-slave/workspace/sid-goto-cc-qutecom/qutecom-2.2.1+dfsg1/obj-x86_64-linux-gnu/wifo/phapi-util  -L/srv/jenkins-slave/workspace/sid-goto-cc-qutecom/qutecom-2.2.1+dfsg1/obj-x86_64-linux-gnu/wifo/phapi/fidlib  -L/srv/jenkins-slave/workspace/sid-goto-cc-qutecom/qutecom-2.2.1+dfsg1/obj-x86_64-linux-gnu/wifo/phapi/speexec  -L/srv/jenkins-slave/workspace/sid-goto-cc-qutecom/qutecom-2.2.1+dfsg1/obj-x86_64-linux-gnu/libs/timer  -L/srv/jenkins-slave/workspace/sid-goto-cc-qutecom/qutecom-2.2.1+dfsg1/obj-x86_64-linux-gnu/wifo/phapi/g722  -L/srv/jenkins-slave/workspace/sid-goto-cc-qutecom/qutecom-2.2.1+dfsg1/obj-x86_64-linux-gnu/wifo/phapi/g726  -L/srv/jenkins-slave/workspace/sid-goto-cc-qutecom/qutecom-2.2.1+dfsg1/obj-x86_64-linux-gnu/libs/owutil/util  -L/srv/jenkins-slave/workspace/sid-goto-cc-qutecom/qutecom-2.2.1+dfsg1/obj-x86_64-linux-gnu/libs/pixertool  -L/srv/jenkins-slave/workspace/sid-goto-cc-qutecom/qutecom-2.2.1+dfsg1/obj-x86_64-linux-gnu/libs/owutil/thread  -L/srv/jenkins-slave/workspace/sid-goto-cc-qutecom/qutecom-2.2.1+dfsg1/obj-x86_64-linux-gnu/libs/webcam  -L/srv/jenkins-slave/workspace/sid-goto-cc-qutecom/qutecom-2.2.1+dfsg1/obj-x86_64-linux-gnu/wifo/srtp ../libosip2/libosip2.a ../owbase/libowbase.so ../owsl/libowsl.so ../eXosip/transport_manager/libtransport_manager.a ../sVoIP/libsvoip.a ../eXosip/libexosip.a ../ortp/libortp.a stun/libstun.a gsm/libgsm.a ../../libs/owutil/cutil/libowcutil.a ../phapi-util/libphapiutil.so fidlib/libfidlib.a speexec/libspeexec.a ../../libs/timer/libwtimer.a g722/libg722.a g726/libg726.a -lboost_program_options -lboost_serialization -lboost_signals -lboost_thread -lboost_system -luuid ../../libs/owutil/util/libowutil.so -lavcodec -lavutil -lswscale ../../libs/pixertool/libpixertool.a ../../libs/owutil/thread/libowthread.a ../../libs/webcam/libwebcam.so -lglib-2.0 -lgmodule-2.0 -lgthread-2.0 -lgobject-2.0 -lpthread -lrt -ldl -lsamplerate -lasound ../eXosip/transport_manager/libtransport_manager.a ../owsl/libowsl.so ../owbase/libowbase.so -lcurl ../sVoIP/libsvoip.a ../libosip2/libosip2.a ../ortp/libortp.a -lcrypto -lssl ../srtp/libsrtp.a ../../libs/pixertool/libpixertool.a -lavcodec -lavutil -lswscale ../../libs/owutil/thread/libowthread.a ../../libs/owutil/util/libowutil.so ../../libs/owutil/cutil/libowcutil.a -lboost_program_options -lboost_serialization -lboost_signals -lboost_thread -lboost_system -luuid -Wl,-rpath,/usr/lib/qutecom 

error: conflicting function declarations "rtp_session_set_jitter_compensation"
old definition in module phmedia-audio file /srv/jenkins-slave/workspace/sid-goto-cc-qutecom/qutecom-2.2.1+dfsg1/wifo/ortp/include/ortp/rtpsession.h line 230
void (struct _RtpSession *, signed int)
new definition in module jitterctl file /srv/jenkins-slave/workspace/sid-goto-cc-qutecom/qutecom-2.2.1+dfsg1/wifo/ortp/src/jitterctl.c line 127
void (struct _RtpSession *session, signed int milisec)

reason for conflict at session->rtp.rem_addr/<padding> in types listed below (struct/unsignedbv):
struct sockaddr_in {
  unsigned short int sin_family;
  unsigned short int sin_port;
  struct in_addr sin_addr;
  unsigned char [8l] sin_zero;
}
unsigned int

wifo/phapi/CMakeFiles/phapi.dir/build.make:921: recipe for target 'wifo/phapi/libphapi.so' failed
make[3]: *** [wifo/phapi/libphapi.so] Error 1

The difference here lies in the type of the rem_addr member within struct
_RtpStream, to be reviewed here, which will cause additional padding to be
added:

http://sources.debian.net/src/qutecom/2.2.1+dfsg1-5/wifo/ortp/include/ortp/rtpsession.h?hl=90#L90

Note that this will affect the offsets of various further members, making the
two types inconsistent in several ways. It is not clear whether there actually
*are* such accesses as I've only done a very cursory review, but certainly there
is risk.

The root cause of the problem is that -DORTP_INET6 is not set on the compiler
command line in all cases.

Best,
Michael

-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 859 bytes
Desc: not available
URL: <http://lists.alioth.debian.org/pipermail/pkg-voip-maintainers/attachments/20140611/233135be/attachment.sig>


More information about the Pkg-voip-maintainers mailing list