Package: cobex Version: 0.2.13-2 Severity: important Tags: patch cobex_ls dies with sigsegv on amd64 because it uses ints as counters in the iconv calls where size_t is expected, and on amd64 size_t != int. The attached patch changes the variables to be of type size_t.
The second patch fixes several "pointer targets in assignment differ in signedness" compiler warnings (although these probably aren't harmful in pratice). -- System Information: Debian Release: lenny/sid APT prefers unstable APT policy: (500, 'unstable') Architecture: amd64 (x86_64) Kernel: Linux 2.6.23.8 (PREEMPT) Locale: LANG=C, [EMAIL PROTECTED] (charmap=ISO-8859-15) Shell: /bin/sh linked to /bin/bash Versions of packages cobex depends on: ii libc6 2.7-4 GNU C Library: Shared libraries ii libexpat1 1.95.8-4 XML parsing C library - runtime li ii libezv24-0 0.1.1-1 ez24V Library: Shared library cobex recommends no packages. -- no debconf information
diff -u cobex-0.2.13-orig/cobex_core.c cobex-0.2.13/cobex_core.c --- cobex-0.2.13-orig/cobex_core.c 2006-10-30 18:35:42.000000000 +0200 +++ cobex-0.2.13/cobex_core.c 2007-12-13 20:24:37.000000000 +0200 @@ -148,8 +148,8 @@ int i; int convLgt; - u_int inBytes = lgt; - u_int outBytes = MAXCHARS; + size_t inBytes = lgt; + size_t outBytes = MAXCHARS; char outOrigMsg[MAXCHARS]; char *inMsgP = msg; diff -u cobex-0.2.13-orig/ls.c cobex-0.2.13/ls.c --- cobex-0.2.13-orig/ls.c 2006-10-30 18:35:42.000000000 +0200 +++ cobex-0.2.13/ls.c 2007-12-13 20:25:31.000000000 +0200 @@ -50,9 +50,9 @@ - int inBytes; + size_t inBytes; char inOrigMsg[MAXCHARS]; - int outBytes = MAXCHARS; + size_t outBytes = MAXCHARS; char outOrigMsg[MAXCHARS]; char *inMsgP = inOrigMsg;
diff -u cobex-0.2.13-orig/cobex_tools.c cobex-0.2.13/cobex_tools.c --- cobex-0.2.13-orig/cobex_tools.c 2006-10-30 18:35:42.000000000 +0200 +++ cobex-0.2.13/cobex_tools.c 2007-12-13 20:18:36.000000000 +0200 @@ -34,7 +34,7 @@ void ctools_signalHandler ( int reason ) { - char aBuffer[513]; + u_char aBuffer[513]; obex_packet aPacket; aPacket.max=512; diff -u cobex-0.2.13-orig/get.c cobex-0.2.13/get.c --- cobex-0.2.13-orig/get.c 2006-10-30 18:35:42.000000000 +0200 +++ cobex-0.2.13/get.c 2007-12-13 20:18:45.000000000 +0200 @@ -33,7 +33,7 @@ int main (int argc, char *argv[]) { v24_port_t *UsedPort=NULL; int rc; - char aBuffer[513]; + u_char aBuffer[513]; obex_packet aPacket; char *name; char *path; diff -u cobex-0.2.13-orig/ls.c cobex-0.2.13/ls.c --- cobex-0.2.13-orig/ls.c 2007-12-15 15:16:51.000000000 +0200 +++ cobex-0.2.13/ls.c 2007-12-13 20:25:31.000000000 +0200 @@ -142,10 +142,10 @@ pD = cobex_parseNext( inPacket,p ); switch (pD.HI) { case OBEX_HI_END_OF_BODY: - if (XML_Parse (*inParser, pD.HIdata, pD.HIlen, 1) == XML_STATUS_ERROR ) {return COBEX_ERR;} + if (XML_Parse (*inParser, (char*)pD.HIdata, pD.HIlen, 1) == XML_STATUS_ERROR ) {return COBEX_ERR;} break; case OBEX_HI_BODY: - if (XML_Parse (*inParser, pD.HIdata, pD.HIlen, 0) == XML_STATUS_ERROR ) {return COBEX_ERR;} + if (XML_Parse (*inParser, (char*)pD.HIdata, pD.HIlen, 0) == XML_STATUS_ERROR ) {return COBEX_ERR;} break; } p = pD.nextHIp; @@ -220,7 +220,7 @@ int rc; //char fileName[80]; - char aBuffer[513]; + u_char aBuffer[513]; obex_packet aPacket; aPacket.max=512; diff -u cobex-0.2.13-orig/mkdir.c cobex-0.2.13/mkdir.c --- cobex-0.2.13-orig/mkdir.c 2006-10-30 18:35:42.000000000 +0200 +++ cobex-0.2.13/mkdir.c 2007-12-13 20:19:34.000000000 +0200 @@ -34,7 +34,7 @@ v24_port_t *UsedPort=NULL; int rc=0; - char aBuffer[513]; + u_char aBuffer[513]; obex_packet aPacket; aPacket.max=512; diff -u cobex-0.2.13-orig/rm.c cobex-0.2.13/rm.c --- cobex-0.2.13-orig/rm.c 2006-10-30 18:35:42.000000000 +0200 +++ cobex-0.2.13/rm.c 2007-12-13 20:19:20.000000000 +0200 @@ -35,7 +35,7 @@ int rc; - char aBuffer[513]; + u_char aBuffer[513]; obex_packet aPacket; aPacket.max=512;