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;

Reply via email to