Package: ipmitool
Version: 1.8.14-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.

[...]
/bin/bash ../libtool --silent --tag=CC   --mode=link gcc  -Wall -g -O2 
-fno-strict-aliasing -Wreturn-type -I /lib/modules/3.2.0-4-amd64/build/include  
-Wl,-z,relro -o ipmitool ipmitool.o ipmishell.o ../lib/libipmitool.la 
plugins/libintf.la -lreadline -lncurses -ltinfo -lreadline -lncurses -ltinfo  
-lcrypto

error: conflicting function declarations "write_fru_area"
old definition in module ipmi_fru file ipmi_fru.c line 424
signed int (struct ipmi_intf *intf, struct fru_info *fru, unsigned char id, 
unsigned short int soffset, unsigned short int doffset, unsigned short int 
length, unsigned char *pFrubuf)
new definition in module ipmi_kontronoem file ipmi_kontronoem.c line 55
signed int (struct ipmi_intf *, struct fru_info *, unsigned char, unsigned int, 
unsigned int, unsigned int, unsigned char *)
Makefile:422: recipe for target 'ipmitool' failed
make[4]: *** [ipmitool] Error 64
make[4]: Leaving directory 
'/srv/jenkins-slave/workspace/sid-goto-cc-ipmitool/ipmitool-1.8.14/src'
Makefile:469: recipe for target 'all-recursive' failed
make[3]: *** [all-recursive] Error 1

Observe the differences on the fourth, fifth, sixth parameter (soffset, doffset,
length): for any platform with sizeof(short)<sizeof(int), this will result in
undefined behaviour in at least one of two ways: the value is truncated in some
way; yet even if the value fits into the smaller type, big endian systems with
pick the wrong bytes.

All it takes is amending the declaration here:

http://sources.debian.net/src/ipmitool/1.8.14-1/lib/ipmi_kontronoem.c?hl=55#L55

Best,
Michael

Attachment: pgp7vTuyvdA8s.pgp
Description: PGP signature

Reply via email to