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

Bug#749663: glhack: Conflicting function declarations of check_leash to cause undefined behaviour



Package: glhack
Version: 1.2-2
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.

[...]
cc -fPIE -pie -Wl,-z,relro -Wl,-z,now -Wl,--as-needed  -o glhack monst.o objects.o allmain.o alloc.o apply.o artifact.o attrib.o ball.o bones.o botl.o cmd.o dbridge.o decl.o detect.o dig.o display.o dlb.o do.o do_name.o do_wear.o dog.o dogmove.o dokick.o dothrow.o drawing.o dungeon.o eat.o end.o engrave.o exper.o explode.o extralev.o files.o fountain.o hack.o hacklib.o invent.o light.o lock.o mail.o makemon.o mapglyph.o mcastu.o mhitm.o mhitu.o minion.o mklev.o mkmap.o mkmaze.o mkobj.o mkroom.o mon.o mondata.o monmove.o monstr.o mplayer.o mthrowu.o muse.o music.o o_init.o objnam.o options.o pager.o pickup.o pline.o polyself.o potion.o pray.o priest.o quest.o questpgr.o read.o rect.o region.o restore.o rip.o rnd.o role.o rumors.o save.o shk.o shknam.o sit.o sounds.o sp_lev.o spell.o steal.o steed.o teleport.o timeout.o topten.o track.o trap.o u_init.o uhitm.o vault.o vision.o vis_tab.o weapon.o were.o wield.o windows.o wizard.o worm.o worn.o write.o zap.o  ioctl.o unixmain.o unixtty.o unixunix.o unixres.o gl_3d.o gl_conf.o gl_emul.o gl_font.o gl_hardw.o gl_image.o gl_main.o gl_map.o gl_menu.o gl_opt.o gl_rendu.o gl_role.o gl_softw.o gl_stat.o gl_text.o gl_tile.o gl_unit.o gl_win.o tile.o version.o -L/usr/lib/x86_64-linux-gnu -lSDL -L/usr/X11R6/lib -lGL -lz -lpng 

error: conflicting function declarations "check_leash"
old definition in module allmain file ../include/extern.h line 41
void (signed int, signed int)
new definition in module apply file apply.c line 542
void (signed char x, signed char y)
Makefile:426: recipe for target 'Sysunix' failed
make[3]: *** [Sysunix] Error 64
make[3]: Leaving directory '/srv/jenkins-slave/workspace/sid-goto-cc-glhack/glhack-1.2/src'
Makefile:100: recipe for target 'glhack' failed
make[2]: *** [glhack] Error 2

Even if all values passed to check_leash actually fit into a signed char, the
wrong declaration at

http://sources.debian.net/src/glhack/1.2-2/include/extern.h?hl=41#L41

will cause undefined behaviour as 1) negative values will be truncated and 2)
even positive signed char will be passed in the wrong byte location on big
endian systems.

Best,
Michael

Attachment: pgpHsAjzEeb9n.pgp
Description: PGP signature


Reply to: