reassign 732207 tvtime
retitle 732207 tvtime: tvtime-configure segfaults on 64-bit systems
thanks

On Wed, Dec 18, 2013 at 02:52:25PM +0100, Alban Browaeys wrote:
> Package: tvtime
> Followup-For: Bug #732207
> 
> Dear Maintainer,
> I rebuild with dh_strip off. Which gives:
> 
> gdb --args tvtime-configure --configfile=/etc/tvtime/tvtime.xml --norm=SECAM 
> --frequencies=france --device=/dev/video0 --vbidevice=/dev/vbi0 --priority=-10
> 
> Program received signal SIGSEGV, Segmentation fault.
> __strlen_sse2 () at ../sysdeps/x86_64/multiarch/../strlen.S:42
> 42  ../sysdeps/x86_64/multiarch/../strlen.S: Aucun fichier ou dossier de ce 
> type.
> (gdb) bt
> #0  __strlen_sse2 () at ../sysdeps/x86_64/multiarch/../strlen.S:42
> #1  0x0000000000401a1e in main (argc=7, argv=0x7fffffffbce8) at 
> tvtime-configure.c:39
> (gdb) up
> #1  0x0000000000401a1e in main (argc=7, argv=0x7fffffffbce8) at 
> tvtime-configure.c:39
> 39      if( strlen( getenv( "HOME" ) ) > 230 ) { fprintf( stderr, "HOME is 
> too long\n" ); exit( 1 ); }
> 
> 
> It turns out that getenv always fails here (amd64), quick test for to 
> reproduce:
> $ gdb bash
> (gdb) b main
> (gdb) r
> (gdb) p/s (char *)getenv("HOME")
> $1 = 0xffffffffffffea8a <Address 0xffffffffffffea8a out of bounds>
> 
> Definitely looks like libc6 is broken on amd64 for its 2.17-97 deb at least 
> (I tested with same libc6 version,
> on debian sid too on arm 32 (cortex A9) and i386 also 32 all is fine.
> 
> critical indeed , you might want to reassign to libc6 (or I will tomorrow)

It is broken if you don't use the correct includes and the compiler
consider the strings are an int argument. Compiling tvtime with -Wall
should give you a hint:

| if x86_64-linux-gnu-gcc -DHAVE_CONFIG_H -I. -I. -I..    -Wall -pedantic -I. 
-DDATADIR="\"/usr/share/tvtime\"" -DCONFDIR="\"/etc/tvtime\"" 
-DFIFODIR="\"/tmp\"" -D_LARGEFILE64_SOURCE -DLOCALEDIR="\"/usr/share/locale\"" 
-I/usr/include/libxml2  -g  -O3 -fomit-frame-pointer -std=gnu99 -MT 
tvtime_configure-tvtime-configure.o -MD -MP -MF 
".deps/tvtime_configure-tvtime-configure.Tpo" \
|           -c -o tvtime_configure-tvtime-configure.o `test -f 
'tvtime-configure.c' || echo './'`tvtime-configure.c; \
|         then mv -f ".deps/tvtime_configure-tvtime-configure.Tpo" 
".deps/tvtime_configure-tvtime-configure.Po"; \
|         else rm -f ".deps/tvtime_configure-tvtime-configure.Tpo"; exit 1; \
|         fi
| tvtime-configure.c: In function 'main':
| tvtime-configure.c:38:5: warning: implicit declaration of function 'getenv' 
[-Wimplicit-function-declaration]
|      if( ! getenv( "HOME" ) ) { fprintf( stderr, "this program needs HOME\n" 
); exit( 1 ); }
|      ^
| tvtime-configure.c:38:5: warning: implicit declaration of function 'exit' 
[-Wimplicit-function-declaration]
| tvtime-configure.c:38:80: warning: incompatible implicit declaration of 
built-in function 'exit' [enabled by default]
|      if( ! getenv( "HOME" ) ) { fprintf( stderr, "this program needs HOME\n" 
); exit( 1 ); }
|                                                                               
  ^
| tvtime-configure.c:39:5: warning: implicit declaration of function 'strlen' 
[-Wimplicit-function-declaration]
|      if( strlen( getenv( "HOME" ) ) > 230 ) { fprintf( stderr, "HOME is too 
long\n" ); exit( 1 ); }
|      ^
| tvtime-configure.c:39:9: warning: incompatible implicit declaration of 
built-in function 'strlen' [enabled by default]
|      if( strlen( getenv( "HOME" ) ) > 230 ) { fprintf( stderr, "HOME is too 
long\n" ); exit( 1 ); }
|          ^
| tvtime-configure.c:39:5: warning: passing argument 1 of 'strlen' makes 
pointer from integer without a cast [enabled by default]
|      if( strlen( getenv( "HOME" ) ) > 230 ) { fprintf( stderr, "HOME is too 
long\n" ); exit( 1 ); }
|      ^
| tvtime-configure.c:39:5: note: expected 'const char *' but argument is of 
type 'int'
| tvtime-configure.c:39:87: warning: incompatible implicit declaration of 
built-in function 'exit' [enabled by default]
|      if( strlen( getenv( "HOME" ) ) > 230 ) { fprintf( stderr, "HOME is too 
long\n" ); exit( 1 ); }  

Adding a #include <string.h> and a #include <stdlib.h> fixes the
problem.

Reassigning back the bug to tvtime.

-- 
Aurelien Jarno                          GPG: 1024D/F1BCDB73
aurel...@aurel32.net                 http://www.aurel32.net


-- 
To UNSUBSCRIBE, email to debian-bugs-rc-requ...@lists.debian.org
with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org

Reply via email to