[oe] [meta-java][PATCH 1/2] rxtx: update to the latest Debian patchset

Mario Domenech Goulart mario at ossystems.com.br
Tue Mar 10 21:10:20 UTC 2015


Update the recipe to apply all patches available from
git://anonscm.debian.org/pkg-java/rxtx.git as of
a4cd13e04254cea7842df2e30e9d12e9765a3ef9.

Signed-off-by: Mario Domenech Goulart <mario at ossystems.com.br>
---
 .../rxtx/files/MonitorThread-daemon.patch          |  66 ++++
 .../rxtx/files/fhs_lock_buffer_overflow_fix.patch  |  66 ++++
 recipes-extended/rxtx/files/fix_snprintf.patch     | 399 +++++++++++++++++++++
 recipes-extended/rxtx/files/format_security.patch  | 112 ++++++
 recipes-extended/rxtx/files/kfreebsd_port.patch    |   7 +
 recipes-extended/rxtx/files/usb_38400.patch        |  68 ++++
 recipes-extended/rxtx/rxtx_2.2.0.bb                |   7 +-
 7 files changed, 724 insertions(+), 1 deletion(-)
 create mode 100644 recipes-extended/rxtx/files/MonitorThread-daemon.patch
 create mode 100644 recipes-extended/rxtx/files/fhs_lock_buffer_overflow_fix.patch
 create mode 100644 recipes-extended/rxtx/files/fix_snprintf.patch
 create mode 100644 recipes-extended/rxtx/files/format_security.patch
 create mode 100644 recipes-extended/rxtx/files/usb_38400.patch

diff --git a/recipes-extended/rxtx/files/MonitorThread-daemon.patch b/recipes-extended/rxtx/files/MonitorThread-daemon.patch
new file mode 100644
index 0000000..8e7951a
--- /dev/null
+++ b/recipes-extended/rxtx/files/MonitorThread-daemon.patch
@@ -0,0 +1,66 @@
+Description: Threads created in Java by RXTX are not marked as daemon.
+Bug: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=674975
+Author: Christopher Wellons <mosquitopsu at gmail.com>
+Upstream-Status: Pending
+--- a/src/gnu/io/I2C.java
++++ b/src/gnu/io/I2C.java
+@@ -468,7 +468,9 @@
+ 		private boolean BI=false;
+ 		private boolean Data=false;
+ 		private boolean Output=false;
+-		MonitorThread() { }
++		MonitorThread() {
++			setDaemon(true);
++		}
+ 		public void run() {
+ 			eventLoop();
+ 		}
+--- a/src/gnu/io/LPRPort.java
++++ b/src/gnu/io/LPRPort.java
+@@ -366,7 +366,9 @@
+ {
+ 	private boolean monError = false;
+ 	private boolean monBuffer = false;
+-		MonitorThread() { }
++		MonitorThread() {
++			setDaemon(true);
++		}
+ 		public void run()
+ 		{
+ 			eventLoop();
+--- a/src/gnu/io/RS485.java
++++ b/src/gnu/io/RS485.java
+@@ -465,7 +465,9 @@
+ 		private boolean BI=false;
+ 		private boolean Data=false;
+ 		private boolean Output=false;
+-		MonitorThread() { }
++		MonitorThread() {
++			setDaemon(true);
++		}
+ 		public void run() {
+ 			eventLoop();
+ 		}
+--- a/src/gnu/io/RXTXPort.java
++++ b/src/gnu/io/RXTXPort.java
+@@ -1629,6 +1629,7 @@
+ 
+ 		MonitorThread() 
+ 		{
++			setDaemon(true);
+ 			if (debug)
+ 				z.reportln( "RXTXPort:MontitorThread:MonitorThread()"); 
+ 		}
+--- a/src/gnu/io/Raw.java
++++ b/src/gnu/io/Raw.java
+@@ -466,7 +466,9 @@
+ 		private boolean BI=false;
+ 		private boolean Data=false;
+ 		private boolean Output=false;
+-		MonitorThread() { }
++		MonitorThread() {
++			setDaemon(true);
++		}
+ 		public void run() {
+ 			eventLoop();
+ 		}
diff --git a/recipes-extended/rxtx/files/fhs_lock_buffer_overflow_fix.patch b/recipes-extended/rxtx/files/fhs_lock_buffer_overflow_fix.patch
new file mode 100644
index 0000000..c4d0e89
--- /dev/null
+++ b/recipes-extended/rxtx/files/fhs_lock_buffer_overflow_fix.patch
@@ -0,0 +1,66 @@
+Description: Java fails with a buffer overflow when there's a locked serial
+device, see http://mailman.qbang.org/pipermail/rxtx/2009-May/10897125.html.
+Author: Sergio Talens-Oliag <sto at debian.org>
+Upstream-Status: Pending
+
+Index: rxtx-2.2pre2/CNI/SerialImp.c
+===================================================================
+--- rxtx-2.2pre2.orig/CNI/SerialImp.c	2012-05-21 13:13:43.000000000 +0200
++++ rxtx-2.2pre2/CNI/SerialImp.c	2012-05-21 13:24:05.876652630 +0200
+@@ -4752,7 +4752,7 @@
+ 	fd = open( file, O_CREAT | O_WRONLY | O_EXCL, 0444 );
+ 	if( fd < 0 )
+ 	{
+-		sprintf( message,
++		snprintf( message, 79,
+ 			"RXTX fhs_lock() Error: creating lock file: %s: %s\n",
+ 			file, strerror(errno) );
+ 		report_error( message );
+Index: rxtx-2.2pre2/src/SerialImp.c
+===================================================================
+--- rxtx-2.2pre2.orig/src/SerialImp.c	2012-05-21 13:13:43.000000000 +0200
++++ rxtx-2.2pre2/src/SerialImp.c	2012-05-21 13:26:50.184644233 +0200
+@@ -5307,7 +5307,7 @@
+ 	}
+ 	if ( dev_lock( filename ) )
+ 	{
+-		sprintf( message,
++		snprintf( message, 79,
+ 			"RXTX fhs_lock() Error: creating lock file for: %s: %s\n",
+ 			filename, strerror(errno) );
+ 		report_error( message );
+@@ -5367,7 +5367,7 @@
+ 	fd = open( file, O_CREAT | O_WRONLY | O_EXCL, 0444 );
+ 	if( fd < 0 )
+ 	{
+-		sprintf( message,
++		snprintf( message, 79,
+ 			"RXTX fhs_lock() Error: creating lock file: %s: %s\n",
+ 			file, strerror(errno) );
+ 		report_error( message );
+Index: rxtx-2.2pre2/src/lfd/lockdaemon.c
+===================================================================
+--- rxtx-2.2pre2.orig/src/lfd/lockdaemon.c	2007-04-26 07:26:07.000000000 +0200
++++ rxtx-2.2pre2/src/lfd/lockdaemon.c	2012-05-21 13:25:35.396648055 +0200
+@@ -145,7 +145,7 @@
+ 	fd = open( file, O_CREAT | O_WRONLY | O_EXCL, 0444 );
+ 	if( fd < 0 )
+ 	{
+-		sprintf( message,
++		snprintf( message, 79,
+ 			"RXTX fhs_lock() Error: creating lock file: %s: %s\n",
+ 			file, strerror(errno) );
+ 		syslog( LOG_INFO, message );
+Index: rxtx-2.2pre2/src/lfd/lockdaemon.c.noinetd
+===================================================================
+--- rxtx-2.2pre2.orig/src/lfd/lockdaemon.c.noinetd	2007-04-26 07:26:07.000000000 +0200
++++ rxtx-2.2pre2/src/lfd/lockdaemon.c.noinetd	2012-05-21 13:25:55.748647017 +0200
+@@ -144,7 +144,7 @@
+ 	fd = open( file, O_CREAT | O_WRONLY | O_EXCL, 0444 );
+ 	if( fd < 0 )
+ 	{
+-		sprintf( message,
++		snprintf( message, 79,
+ 			"RXTX fhs_lock() Error: creating lock file: %s: %s\n",
+ 			file, strerror(errno) );
+ 		syslog( LOG_INFO, message );
diff --git a/recipes-extended/rxtx/files/fix_snprintf.patch b/recipes-extended/rxtx/files/fix_snprintf.patch
new file mode 100644
index 0000000..704a2c4
--- /dev/null
+++ b/recipes-extended/rxtx/files/fix_snprintf.patch
@@ -0,0 +1,399 @@
+From: Jose Luis Guardiola <guardiola at iti.upv.es>
+Forwarded: no
+Description: replace s[n]printf with asprintf/free
+Bug-Debian: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=731151
+Upstream-Status: Pending
+
+--- a/src/SerialImp.c
++++ b/src/SerialImp.c
+@@ -5827,7 +5827,7 @@
+ 		LOCKDIR, NULL
+ 	};
+ 	const char *lockprefixes[] = { "LCK..", "lk..", "LK.", NULL };
+-	char *p, file[80], pid_buffer[20], message[80];
++	char *p, *file, pid_buffer[20], *message;
+ 	int i = 0, j, k, fd , pid;
+ 	struct stat buf, buf2, lockbuf;
+ 
+@@ -5868,19 +5868,22 @@
+ 			while ( lockprefixes[k] )
+ 			{
+ 				/* FHS style */
+-				sprintf( file, "%s/%s%s", lockdirs[i],
++				asprintf( &file, "%s/%s%s", lockdirs[i],
+ 					lockprefixes[k], p );
+ 				if( stat( file, &buf ) == 0 )
+ 				{
+-					sprintf( message, UNEXPECTED_LOCK_FILE,
++					asprintf( &message, UNEXPECTED_LOCK_FILE,
+ 						file );
+ 					report_warning( message );
++					free( message );
++					free( file );
+ 					return 1;
+ 				}
++				free( file );
+ 
+ 				/* UUCP style */
+ 				stat(port_filename , &buf );
+-				sprintf( file, "%s/%s%03d.%03d.%03d",
++				asprintf( &file, "%s/%s%03d.%03d.%03d",
+ 					lockdirs[i],
+ 					lockprefixes[k],
+ 					(int) major( buf.st_dev ),
+@@ -5889,11 +5892,14 @@
+ 				);
+ 				if( stat( file, &buf ) == 0 )
+ 				{
+-					sprintf( message, UNEXPECTED_LOCK_FILE,
++					asprintf( &message, UNEXPECTED_LOCK_FILE,
+ 						file );
+ 					report_warning( message );
++					free( message );
++					free( file );
+ 					return 1;
+ 				}
++				free( file );
+ 				k++;
+ 			}
+ 		}
+@@ -5917,7 +5923,7 @@
+ #endif /* __unixware__ */
+ 		p--;
+ 	}
+-	sprintf( file, "%s/%s%s", LOCKDIR, LOCKFILEPREFIX, p );
++	asprintf( &file, "%s/%s%s", LOCKDIR, LOCKFILEPREFIX, p );
+ #else
+ 	/*  UUCP standard locks */
+ 	if ( stat( port_filename, &buf ) != 0 )
+@@ -5925,7 +5931,7 @@
+ 		report( "RXTX is_device_locked() could not find device.\n" );
+ 			return 1;
+ 	}
+-	sprintf( file, "%s/LK.%03d.%03d.%03d",
++	asprintf( &file, "%s/LK.%03d.%03d.%03d",
+ 		LOCKDIR,
+ 		(int) major( buf.st_dev ),
+  		(int) major( buf.st_rdev ),
+@@ -5946,21 +5952,25 @@
+ 
+ 		if( kill( (pid_t) pid, 0 ) && errno==ESRCH )
+ 		{
+-			sprintf( message,
++			asprintf( &message,
+ 				"RXTX Warning:  Removing stale lock file. %s\n",
+ 				file );
+ 			report_warning( message );
++			free( message );
+ 			if( unlink( file ) != 0 )
+ 			{
+-				snprintf( message, 80, "RXTX Error:  Unable to \
++				asprintf( &message, "RXTX Error:  Unable to \
+ 					remove stale lock file: %s\n",
+ 					file
+ 				);
+ 				report_warning( message );
++				free( message );
++				free( file );
+ 				return 1;
+ 			}
+ 		}
+ 	}
++	free(file);
+ 	return 0;
+ }
+ #endif /* WIN32 */
+--- a/src/lfd/lockdaemon.c
++++ b/src/lfd/lockdaemon.c
+@@ -120,8 +120,8 @@
+ 	 *
+ 	 */
+ 	int fd,j;
+-	char lockinfo[12], message[80];
+-	char file[80], *p;
++	char lockinfo[12];
++	char *file, *p, *message;
+ 
+ 	j = strlen( filename );
+ 	p = ( char * ) filename + j;
+@@ -136,24 +136,28 @@
+ #endif /* __unixware__ */
+ 		p--;
+ 	}
+-	sprintf( file, "%s/LCK..%s", LOCKDIR, p );
+ 	if ( check_lock_status( filename ) )
+ 	{
+ 		/* syslog( LOG_INFO, "fhs_lock() lockstatus fail\n" ); */
+ 		return 1;
+ 	}
++	asprintf( &file, "%s/LCK..%s", LOCKDIR, p );
+ 	fd = open( file, O_CREAT | O_WRONLY | O_EXCL, 0444 );
+ 	if( fd < 0 )
+ 	{
+-		snprintf( message, 79,
++		asprintf( &message,
+ 			"RXTX fhs_lock() Error: creating lock file: %s: %s\n",
+ 			file, strerror(errno) );
+ 		syslog( LOG_INFO, message );
++		free(message);
++		free(file);
+ 		return 1;
+ 	}
+ 	sprintf( lockinfo, "%10d\n", pid );
+-	sprintf( message, "fhs_lock: creating lockfile: %s\n", lockinfo );
++	//asprintf( &message, "fhs_lock: creating lockfile: %s\n", lockinfo );
+ 	//syslog( LOG_INFO, message );
++	//free(message);
++	free(file);
+ 	write( fd, lockinfo, 11 );
+ 	close( fd );
+ 	return 0;
+@@ -563,7 +567,7 @@
+ 		LOCKDIR, NULL
+ 	};
+ 	const char *lockprefixes[] = { "LCK..", "lk..", "LK.", NULL }; 
+-	char *p, file[80], pid_buffer[20], message[80];
++	char *p, *file, pid_buffer[20], *message;
+ 	int i = 0, j, k, fd , pid;
+ 	struct stat buf;
+ 	struct stat buf2;
+@@ -602,19 +606,22 @@
+ 			while ( lockprefixes[k] )
+ 			{
+ 				/* FHS style */
+-				sprintf( file, "%s/%s%s", lockdirs[i],
++				asprintf( &file, "%s/%s%s", lockdirs[i],
+ 					lockprefixes[k], p );
+ 				if( stat( file, &buf ) == 0 )
+ 				{
+-					sprintf( message, UNEXPECTED_LOCK_FILE,
++					asprintf( &message, UNEXPECTED_LOCK_FILE,
+ 						file );
+ 					syslog( LOG_INFO, message );
++					free( message );
++					free( file );
+ 					return 1;
+ 				}
++				free( file );
+ 
+ 				/* UUCP style */
+ 				stat(port_filename , &buf );
+-				sprintf( file, "%s/%s%03d.%03d.%03d",
++				asprintf( &file, "%s/%s%03d.%03d.%03d",
+ 					lockdirs[i],
+ 					lockprefixes[k],
+ 					(int) major( buf.st_dev ),
+@@ -623,11 +630,14 @@
+ 				);
+ 				if( stat( file, &buf ) == 0 )
+ 				{
+-					sprintf( message, UNEXPECTED_LOCK_FILE,
++					asprintf( &message, UNEXPECTED_LOCK_FILE,
+ 						file );
+ 					syslog( LOG_INFO, message );
++					free( message );
++					free( file );
+ 					return 1;
+ 				}
++				free( file );
+ 				k++;
+ 			}
+ 		}
+@@ -651,10 +661,10 @@
+ #endif /* __unixware__ */
+ 		p--;
+ 	}
+-	sprintf( file, "%s/%s%s", LOCKDIR, LOCKFILEPREFIX, p );
++	asprintf( &file, "%s/%s%s", LOCKDIR, LOCKFILEPREFIX, p );
+ #else 
+ 	/*  UUCP standard locks */
+-	sprintf( file, "%s/LK.%03d.%03d.%03d",
++	asprintf( &file, "%s/LK.%03d.%03d.%03d",
+ 		LOCKDIR,
+ 		(int) major( buf.st_dev ),
+  		(int) major( buf.st_rdev ),
+@@ -672,32 +682,39 @@
+ 		/* FIXME null terminiate pid_buffer? need to check in Solaris */
+ 		close( fd );
+ 		sscanf( pid_buffer, "%d", &pid );
+-		sprintf( message, "found lock for %s with pid %i\n", file, pid );
++		/* asprintf( &message, "found lock for %s with pid %i\n", file, pid ); */
+ 		/* syslog( LOG_INFO, message ); */
++		/* free( message ); */
+ 
+ 		if( kill( (pid_t) pid, 0 ) && errno==ESRCH )
+ 		{
+-			sprintf( message,
++			asprintf( &message,
+ 				"RXTX Warning:  Removing stale lock file. %s\n",
+ 				file );
+ 			syslog( LOG_INFO, message );
++			free( message );
+ 			if( unlink( file ) != 0 )
+ 			{
+-				snprintf( message, 80, "RXTX Error:  Unable to \
++				asprintf( &message, "RXTX Error:  Unable to \
+ 					remove stale lock file: %s\n",
+ 					file
+ 				);
+ 				syslog( LOG_INFO, message );
++				free( message );
++				free( file );
+ 				return 0;
+ 			}
+ 		}
+ 		else
+ 		{
+-			sprintf( message, "could not kill %i\n", pid );
++			/* asprintf( &message, "could not kill %i\n", pid ); */
+ 			/* syslog( LOG_INFO, message ); */
++			/* free( message ); */
++			free( file );
+ 			return 1;
+ 		}
+ 	}
++	free( file );
+ 	return 0;
+ }
+ int init( void )
+--- a/src/lfd/lockdaemon.c.noinetd
++++ b/src/lfd/lockdaemon.c.noinetd
+@@ -119,8 +119,8 @@
+ 	 *
+ 	 */
+ 	int fd,j;
+-	char lockinfo[12], message[80];
+-	char file[80], *p;
++	char lockinfo[12];
++	char *file, *p, *message;
+ 
+ 	j = strlen( filename );
+ 	p = ( char * ) filename + j;
+@@ -135,24 +135,28 @@
+ #endif /* __unixware__ */
+ 		p--;
+ 	}
+-	sprintf( file, "%s/LCK..%s", LOCKDIR, p );
+ 	if ( check_lock_status( filename ) )
+ 	{
+ 		syslog( LOG_INFO, "fhs_lock() lockstatus fail\n" );
+ 		return 1;
+ 	}
++	asprintf( &file, "%s/LCK..%s", LOCKDIR, p );
+ 	fd = open( file, O_CREAT | O_WRONLY | O_EXCL, 0444 );
+ 	if( fd < 0 )
+ 	{
+-		snprintf( message, 79,
++		asprintf( &message,
+ 			"RXTX fhs_lock() Error: creating lock file: %s: %s\n",
+ 			file, strerror(errno) );
+ 		syslog( LOG_INFO, message );
++		free(message);
++		free(file);
+ 		return 1;
+ 	}
+ 	sprintf( lockinfo, "%10d\n", pid );
+-	sprintf( message, "fhs_lock: creating lockfile: %s\n", lockinfo );
++	asprintf( &message, "fhs_lock: creating lockfile: %s\n", lockinfo );
+ 	syslog( LOG_INFO, message );
++	free( message );
++	free( file );
+ 	write( fd, lockinfo, 11 );
+ 	close( fd );
+ 	return 0;
+@@ -556,7 +560,7 @@
+ 		LOCKDIR, NULL
+ 	};
+ 	const char *lockprefixes[] = { "LCK..", "lk..", "LK.", NULL }; 
+-	char *p, file[80], pid_buffer[20], message[80];
++	char *p, *file, pid_buffer[20], *message;
+ 	int i = 0, j, k, fd , pid;
+ 	struct stat buf;
+ 	struct stat buf2;
+@@ -595,19 +599,22 @@
+ 			while ( lockprefixes[k] )
+ 			{
+ 				/* FHS style */
+-				sprintf( file, "%s/%s%s", lockdirs[i],
++				asprintf( &file, "%s/%s%s", lockdirs[i],
+ 					lockprefixes[k], p );
+ 				if( stat( file, &buf ) == 0 )
+ 				{
+-					sprintf( message, UNEXPECTED_LOCK_FILE,
++					asprintf( &message, UNEXPECTED_LOCK_FILE,
+ 						file );
+ 					syslog( LOG_INFO, message );
++					free( message );
++					free( file );
+ 					return 1;
+ 				}
++				free( file );
+ 
+ 				/* UUCP style */
+ 				stat(port_filename , &buf );
+-				sprintf( file, "%s/%s%03d.%03d.%03d",
++				asprintf( &file, "%s/%s%03d.%03d.%03d",
+ 					lockdirs[i],
+ 					lockprefixes[k],
+ 					(int) major( buf.st_dev ),
+@@ -616,11 +623,14 @@
+ 				);
+ 				if( stat( file, &buf ) == 0 )
+ 				{
+-					sprintf( message, UNEXPECTED_LOCK_FILE,
++					asprintf( &message, UNEXPECTED_LOCK_FILE,
+ 						file );
+ 					syslog( LOG_INFO, message );
++					free( message );
++					free( file );
+ 					return 1;
+ 				}
++				free( file );
+ 				k++;
+ 			}
+ 		}
+@@ -644,7 +654,7 @@
+ #endif /* __unixware__ */
+ 		p--;
+ 	}
+-	sprintf( file, "%s/%s%s", LOCKDIR, LOCKFILEPREFIX, p );
++	asprintf( &file, "%s/%s%s", LOCKDIR, LOCKFILEPREFIX, p );
+ #else 
+ 	/*  UUCP standard locks */
+ 	if ( stat( port_filename, &buf ) != 0 )
+@@ -656,7 +666,7 @@
+ 		syslog( LOG_INFO, message );
+ 		return 1;
+ 	}
+-	sprintf( file, "%s/LK.%03d.%03d.%03d",
++	asprintf( &file, "%s/LK.%03d.%03d.%03d",
+ 		LOCKDIR,
+ 		(int) major( buf.st_dev ),
+  		(int) major( buf.st_rdev ),
+@@ -677,10 +687,11 @@
+ 
+ 		if( kill( (pid_t) pid, 0 ) && errno==ESRCH )
+ 		{
+-			sprintf( message,
++			asprintf( &message,
+ 				"RXTX Warning:  Removing stale lock file. %s\n",
+ 				file );
+ 			syslog( LOG_INFO, message );
++			free( message );
+ 			if( unlink( file ) != 0 )
+ 			{
+ 				snprintf( message, 80, "RXTX Error:  Unable to \
+@@ -688,10 +699,13 @@
+ 					file
+ 				);
+ 				syslog( LOG_INFO, message );
++				free( message );
++				free( file );
+ 				return 1;
+ 			}
+ 		}
+ 	}
++	free( file );
+ 	return 0;
+ }
+ int init( void )
diff --git a/recipes-extended/rxtx/files/format_security.patch b/recipes-extended/rxtx/files/format_security.patch
new file mode 100644
index 0000000..bd074ad
--- /dev/null
+++ b/recipes-extended/rxtx/files/format_security.patch
@@ -0,0 +1,112 @@
+From: tony mancill <tmancill at debian.org>
+Forwarded: no
+Description: use format specifiers in fprintf statements for hardening flags
+Upstream-Status: Pending
+
+--- a/src/SerialImp.c
++++ b/src/SerialImp.c
+@@ -5108,7 +5108,7 @@
+ void report_warning(const char *msg)
+ {
+ #ifndef DEBUG_MW
+-	fprintf(stderr, msg);
++	fprintf(stderr, "%s", msg);
+ #else
+ 	mexWarnMsgTxt( (const char *) msg );
+ #endif /* DEBUG_MW */
+@@ -5129,7 +5129,7 @@
+ #ifdef DEBUG_MW
+ 	mexErrMsgTxt( msg );
+ #else
+-	fprintf(stderr, msg);
++	fprintf(stderr, "%s", msg);
+ #endif /* DEBUG_MW */
+ #endif /* DEBUG_VERBOSE */
+ }
+@@ -5145,7 +5145,7 @@
+ void report_error(const char *msg)
+ {
+ #ifndef DEBUG_MW
+-	fprintf(stderr, msg);
++	fprintf(stderr, "%s", msg);
+ #else
+ 	mexWarnMsgTxt( msg );
+ #endif /* DEBUG_MW */
+@@ -5164,7 +5164,7 @@
+ {
+ #ifdef DEBUG
+ #	ifndef DEBUG_MW
+-		fprintf(stderr, msg);
++		fprintf(stderr, "%s", msg);
+ #	else
+ 		mexPrintf( msg );
+ #	endif /* DEBUG_MW */
+--- a/src/ParallelImp.c
++++ b/src/ParallelImp.c
+@@ -920,7 +920,7 @@
+ void report_error(char *msg)
+ {
+ #ifndef DEBUG_MW
+-	fprintf(stderr, msg);
++	fprintf(stderr, "%s", msg);
+ #else
+ 	mexWarnMsgTxt( msg );
+ #endif /* DEBUG_MW */
+@@ -938,7 +938,7 @@
+ void report(char *msg)
+ {
+ #ifdef DEBUG
+-        fprintf(stderr, msg);
++        fprintf(stderr, "%s", msg);
+ #endif /* DEBUG */
+ }
+ 
+--- a/src/SerialImp.cpp
++++ b/src/SerialImp.cpp
+@@ -1844,7 +1844,7 @@
+ 
+ 
+ #ifdef DEBUG
+-	fprintf(stderr, msg);
++	fprintf(stderr, "%s", msg);
+ #endif
+ }
+ 
+--- a/CNI/SerialImp.c
++++ b/CNI/SerialImp.c
+@@ -4549,7 +4549,7 @@
+ void report_warning(char *msg)
+ {
+ #ifndef DEBUG_MW
+-	fprintf(stderr, msg);
++	fprintf(stderr, "%s", msg);
+ #else
+ 	mexWarnMsgTxt( (const char *) msg );
+ #endif /* DEBUG_MW */
+@@ -4570,7 +4570,7 @@
+ #ifdef DEBUG_MW
+ 	mexErrMsgTxt( msg );
+ #else
+-	fprintf(stderr, msg);
++	fprintf(stderr, "%s", msg);
+ #endif /* DEBUG_MW */
+ #endif /* DEBUG_VERBOSE */
+ }
+@@ -4586,7 +4586,7 @@
+ void report_error(char *msg)
+ {
+ #ifndef DEBUG_MW
+-	fprintf(stderr, msg);
++	fprintf(stderr, "%s", msg);
+ #else
+ 	mexWarnMsgTxt( msg );
+ #endif /* DEBUG_MW */
+@@ -4605,7 +4605,7 @@
+ {
+ #ifdef DEBUG
+ #	ifndef DEBUG_MW
+-		fprintf(stderr, msg);
++		fprintf(stderr, "%s", msg);
+ #	else
+ 		mexPrintf( msg );
+ #	endif /* DEBUG_MW */
diff --git a/recipes-extended/rxtx/files/kfreebsd_port.patch b/recipes-extended/rxtx/files/kfreebsd_port.patch
index b5fa172..a05e40a 100644
--- a/recipes-extended/rxtx/files/kfreebsd_port.patch
+++ b/recipes-extended/rxtx/files/kfreebsd_port.patch
@@ -1,7 +1,14 @@
 Description: Defines FreeBSD for kFreeBSD systems, also makes sure kfreeBSD is set to use FHS
+
 #grep -r -H "__FreeBSD" . -m 1 --exclude=*.patch --exclude-dir=.git | cut -d: -f1 | xargs sed -i s/__FreeBSD__/__FreeBSD_kernel__/
+
+#grep -r -H "ifdef __linux__" . -m 1 --exclude=*.patch --exclude-dir=.git | cut -d: -f1 | xargs sed -i s/'#ifdef __linux__'/'#if defined(__linux__) || defined(__GNU__) || defined(__GLIBC__)'/
+
+#grep -r -H "ifndef __linux__" . -m 1 --exclude=*.patch --exclude-dir=.git | cut -d: -f1 | xargs sed -i s/'#ifndef __linux__'/'#if !defined(__linux__) \&\& !defined(__GNU__) \&\& !defined(__GLIBC__)'/
+
 Bug: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=585089
 Author: Scott Howard <showard at debian.org>
+Upstream-Status: Pending
 
 Index: rxtx/src/RS485Imp.c
 ===================================================================
diff --git a/recipes-extended/rxtx/files/usb_38400.patch b/recipes-extended/rxtx/files/usb_38400.patch
new file mode 100644
index 0000000..fffe4c5
--- /dev/null
+++ b/recipes-extended/rxtx/files/usb_38400.patch
@@ -0,0 +1,68 @@
+From: Jan Niehusmann <jan at gondor.com>
+Subject: Patch to fix setting USB-serial adapters to 38400 bps
+Bug-Debian: http://bugs.debian.org/740098
+Forwarded: no
+Description: The following patch should fix the reported issue.
+ .
+ On serial ports not supporting the TIOCGSERIAL/TIOCSSERIAL mechanism,
+ this still means that the custom baud rates do not work, but at least
+ 38400 works, again.
+ .
+ Perhaps an even better fix would be switching to the newer termios2 API,
+ as described here:
+ https://mail.python.org/pipermail/python-list/2012-October/633871.html
+ .
+ That API allows setting custom baud rates on the USB serial adapters I
+ have tested, where TIOCGSERIAL/TIOCSSERIAL was not supported.
+ .
+ But unfortunately, termios2 is not available through glibc, so one would
+ need to call linux-specific ioctls directly, which wouldn't be portable
+ at all, and I don't know how it interacts with the BSD / Hurd ports.
+ .
+ Therefore this is the minimal fix, for now.
+Upstream-Status: Pending
+
+--- a/src/SerialImp.c
++++ b/src/SerialImp.c
+@@ -872,10 +872,14 @@
+ 	   out and select baud rates 38400 then 28800 then 38400, you will get
+ 	   a final baud rate of 28800 because you did not update the divisor.
+ 
++	   However, if the serial port doesn't support TIOCGSERIAL or custom speeds,
++	   don't fail: In this case, just use B38400 and assume that there is no way
++	   to set a custom speed on this port.
++
+ 	   See the next ifdef below for the divisor.
+ 	*/
+ #if defined(TIOCGSERIAL)
+-	if ( cspeed == B38400 )
++	if ( cspeed == B38400 && ioctl( fd, TIOCGSERIAL, &sstruct ) == 0 )
+ 		cspeed = 38400;
+ #endif /* TIOCGSERIAL */
+ 	if(     cfsetispeed( &ttyset, cspeed ) < 0 ||
+@@ -905,10 +909,9 @@
+ 			return(1);
+ 		}
+ 		sstruct.custom_divisor = ( sstruct.baud_base/cspeed );
+-		cspeed = B38400;
+ #endif /* TIOCGSERIAL */
+-		if(     cfsetispeed( &ttyset, cspeed ) < 0 ||
+-			cfsetospeed( &ttyset, cspeed ) < 0 )
++		if(     cfsetispeed( &ttyset, B38400 ) < 0 ||
++			cfsetospeed( &ttyset, B38400 ) < 0 )
+ 		{
+ 			/* OK, we tried everything */
+ 			report( "nativeSetSerialPortParams: Cannot Set Speed\n" );
+@@ -916,8 +919,11 @@
+ 		}
+ #if defined(TIOCSSERIAL)
+ 		/*  It is assumed Win32 does this for us */
++		/*  Ignore errors if the target speed is 38400: In this case,
++		 *  just assume TIOCSSERIAL is not supported and custom speeds are
++		 *  not available. */
+ 		if (	sstruct.baud_base < 1 ||
+-		ioctl( fd, TIOCSSERIAL, &sstruct ) < 0 )
++		ioctl( fd, TIOCSSERIAL, &sstruct ) < 0 && cspeed != 38400 )
+ 		{
+ 			return( 1 );
+ 		}
diff --git a/recipes-extended/rxtx/rxtx_2.2.0.bb b/recipes-extended/rxtx/rxtx_2.2.0.bb
index 0d5aa21..ff17e9c 100644
--- a/recipes-extended/rxtx/rxtx_2.2.0.bb
+++ b/recipes-extended/rxtx/rxtx_2.2.0.bb
@@ -13,7 +13,12 @@ SRC_URI = "http://rxtx.qbang.org/pub/rxtx/rxtx-2.2pre2.zip \
            file://sys_io_h_check.patch \
            file://port_to_hurd.patch \
            file://multiple_property_dirs.patch \
-           file://uninstall_target.patch"
+           file://uninstall_target.patch \
+           file://fhs_lock_buffer_overflow_fix.patch \
+           file://MonitorThread-daemon.patch \
+           file://usb_38400.patch \
+           file://fix_snprintf.patch \
+           file://format_security.patch"
 
 SRC_URI[md5sum] = "7eedb18e3f33a427e2b0e9be8ce3f94c"
 SRC_URI[sha256sum] = "3c30373e760f444def3650c76c5a00ae12fb1d860ec008750d084f4880495b03"
-- 
2.1.4



More information about the Openembedded-devel mailing list