Package: 9base
Version: 1:6-6
Usertags: goto-cc

When building the package using our research compiler infrastructure that
supports link-time type checking, we noticed the following conflicting
declarations:

- troff/hytab.c: typedef unsigned char Uchar; Uchar bxh[26][13] = ...
  http://sources.debian.net/src/9base/1:6-6/troff/hytab.c#L8
- troff/n8.c: extern char bxh[26][13], ...
  http://sources.debian.net/src/9base/1:6-6/troff/n8.c#L313
  where it is passed as argument to
  int dilook(int a, int b, char t[26][13])

with char being signed on several Debian architectures. The same holds for all
the other variables declared in hytab.c. While the code may work perfectly ok on
architectures with signed char (which includes the x86 ones), it would then
seemingly be broken on those with unsigned char (including the ARM ports). This
is due to the conversion to int at, which will result in i taking different
bit patterns depending on the signedness of bxh and friends.

http://sources.debian.net/src/9base/1:6-6/troff/n8.c#L350

Best,
Michael

Attachment: pgp4_wQUk4hEn.pgp
Description: PGP signature

Reply via email to