Package: cdck
Version: 0.5.2-2
Severity: grave
Tags: patch
Justification: renders package unusable

Hi,

the sizes of the cdck 0.5.2-2 packages, as seen on packages.debian.org
[1] are suspiciously small on arm, powerpc and s390. Looking at the
buildd logs, those architectures get this warning during build:

 cdck_main.cpp: In function 'int main(int, char**)':
 cdck_main.cpp:36: warning: comparison is always true due to limited range of 
data type

Line 36 in cdck_main.cpp is the while loop for option parsing:

 char ch;
 [...]
 while ((ch = getopt(argc, argv, "?hivd:po:V"))!=-1) {

I believe that 'char ch' is unsigned rather than signed on the
architectures listed above, and the compiler optimizes away most of the
main program and the libraries because of this. The Arm Linux FAQ seems
to confirm this [2]. Indeed, if I explicitly specify 'unsigned char ch'
and test this on my i386, I get a smaller binary and the expected busy
loop in option parsing.

Based on this, I'm setting the severity to 'grave' although I haven't
been able to test this on arm/powerpc/s390 myself.

Trivial patch attached.

[1] http://packages.debian.org/unstable/utils/cdck
[2] http://www.arm.linux.org.uk/docs/faqs/signedchar.php

Cheers,
-- 
Niko Tyni               [EMAIL PROTECTED]
--- src/cdck_main.cpp   2006/12/07 21:51:56     1.1
+++ src/cdck_main.cpp   2006/12/07 21:53:25
@@ -21,7 +21,7 @@
 
 int main (int argc, char *argv[])
 {
-       char ch;
+       signed char ch;
        char *program_name = (strchr(argv[0], '/') == NULL) ? argv[0] : 
(strrchr(argv[0], '/') + 1);
 
        bool verbose = false;

Reply via email to