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

Bug#749606: ax25-apps: Conflicting parameter types to cause undefined behaviour



Package: ax25-apps
Version: 0.0.8-rc2+cvs20130510-3
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.

[...]
libtool: link: gcc -g -O2 -fPIE -fstack-protector --param=ssp-buffer-size=4 -Wformat -Werror=format-security -Wall -fPIE -pie -Wl,-z -Wl,relro -Wl,-z -Wl,now -o call call.o menu.o crc.o yapp.o dostime.o  -lncurses /usr/lib/libax25.so

error: conflicting function declarations "unix2yapp"
old definition in module yapp file call.h line 21
void (signed int, char *)
new definition in module dostime file dostime.c line 87
void (signed long int unix_date, char *buffer)
Makefile:411: recipe for target 'call' failed
make[3]: *** [call] Error 64
make[3]: Leaving directory '/srv/jenkins-slave/workspace/sid-goto-cc-ax25-apps/ax25-apps-0.0.8-rc2+cvs20130510/call'
Makefile:391: recipe for target 'all-recursive' failed
make[2]: *** [all-recursive] Error 1

The wrong type in call.h breaks the following call of unix2yapp in two ways:

http://sources.debian.net/src/ax25-apps/0.0.8-rc2+cvs20130510-3/call/yapp.c?hl=208#L208

First, sb.st_mtime will be converted to int, possibly losing information as the
value max exceed the maximum value of int. The implementation, then, will face
undefined values for several bytes if sizeof(long)>sizeof(int). On big endian
systems, the call will even break when values fit the maximum value of int.

Best,
Michael

Attachment: pgpj8ncZlRrhc.pgp
Description: PGP signature


Reply to: