lfarkas pushed to rxtx (f21). "Merge branch 'master' into f21"
notifications at fedoraproject.org
notifications at fedoraproject.org
Mon May 4 13:51:52 UTC 2015
>From f3cb6ecd17f22333108b52c51b62ba06f03efc48 Mon Sep 17 00:00:00 2001
From: Levente Farkas <lfarkas at lfarkas.org>
Date: Mon, 4 May 2015 15:32:05 +0200
Subject: add bugfix #1212417 #1208453
diff --git a/rxtx-2.2-convert-strcpy-to-strncpy.patch b/rxtx-2.2-convert-strcpy-to-strncpy.patch
new file mode 100644
index 0000000..66c347f
--- /dev/null
+++ b/rxtx-2.2-convert-strcpy-to-strncpy.patch
@@ -0,0 +1,607 @@
+From 170ff458a47b7b991999bfca013d006034ca875e Mon Sep 17 00:00:00 2001
+From: Alec Leamas <leamas.alec at gmail.com>
+Date: Fri, 1 May 2015 14:11:56 +0200
+Subject: [PATCH] Convert strcpy to strncpy (bz #1208453):
+
+---
+ src/SerialImp.c | 135 ++++++++++++++++++++++++++++----------------------------
+ 1 file changed, 67 insertions(+), 68 deletions(-)
+
+diff --git a/src/SerialImp.c b/src/SerialImp.c
+index 8766c31..a6caa85 100644
+--- a/src/SerialImp.c
++++ b/src/SerialImp.c
+@@ -153,7 +153,6 @@ extern int errno;
+
+ JavaVM *javaVM = NULL;
+
+-
+ struct preopened *preopened_port = NULL;
+
+ /* this is so diff will not generate noise when merging 1.4 and 1.5 changes
+@@ -290,7 +289,7 @@ JNIEXPORT void JNICALL RXTXPort(Initialize)(
+ }
+ if(strcmp(name.release,UTS_RELEASE)!=0)
+ {
+- sprintf( message, LINUX_KERNEL_VERSION_ERROR, UTS_RELEASE,
++ snprintf( message, sizeof(message), LINUX_KERNEL_VERSION_ERROR, UTS_RELEASE,
+ name.release );
+ report( message );
+ getchar();
+@@ -641,14 +640,14 @@ JNIEXPORT jint JNICALL RXTXPort(open)(
+ ENTER( "RXTXPort:open" );
+ if ( LOCK( filename, pid ) )
+ {
+- sprintf( message, "open: locking has failed for %s\n",
++ snprintf( message, sizeof(message), "open: locking has failed for %s\n",
+ filename );
+ report( message );
+ goto fail;
+ }
+ else
+ {
+- sprintf( message, "open: locking worked for %s\n", filename );
++ snprintf( message, sizeof(message), "open: locking worked for %s\n", filename );
+ report( message );
+ }
+ /* This is used so DTR can remain low on 'open()' */
+@@ -674,7 +673,7 @@ JNIEXPORT jint JNICALL RXTXPort(open)(
+
+ if (fd >= 0 && (ioctl(fd, TIOCEXCL) == -1))
+ {
+- sprintf( message, "open: exclusive access denied for %s\n",
++ snprintf( message, sizeof(message), "open: exclusive access denied for %s\n",
+ filename );
+ report( message );
+ report_error( message );
+@@ -686,7 +685,7 @@ JNIEXPORT jint JNICALL RXTXPort(open)(
+
+ if( configure_port( fd ) ) goto fail;
+ (*env)->ReleaseStringUTFChars( env, jstr, filename );
+- sprintf( message, "open: fd returned is %i\n", fd );
++ snprintf( message, sizeof(message), "open: fd returned is %i\n", fd );
+ report( message );
+ LEAVE( "RXTXPort:open" );
+ report_time_end( );
+@@ -1270,7 +1269,7 @@ void *drain_loop( void *arg )
+ if( eis && eis->writing )
+ {
+ /*
+- sprintf(msg, "drain_loop: setting OUTPUT_BUFFER_EMPTY\n" );
++ snprintf( msg, sizeof(msg), "drain_loop: setting OUTPUT_BUFFER_EMPTY\n" );
+ report( msg );
+ */
+ eis->output_buffer_empty_flag = 1;
+@@ -1338,7 +1337,7 @@ static void warn_sig_abort( int signo )
+ {
+ /*
+ char msg[80];
+- sprintf( msg, "RXTX Recieved Signal %i\n", signo );
++ snprintf( msg, sizeof(msg), "RXTX Recieved Signal %i\n", signo );
+ report_error( msg );
+ */
+ }
+@@ -1440,7 +1439,7 @@ JNIEXPORT void JNICALL RXTXPort(writeByte)( JNIEnv *env,
+ report_time_start();
+ ENTER( "RXTXPort:writeByte" );
+ do {
+- sprintf( msg, "writeByte %c>>\n", byte );
++ snprintf( msg, sizeof(msg), "writeByte %c>>\n", byte );
+ report( msg );
+ result=WRITE (fd, (void * ) &byte, sizeof(unsigned char));
+ } while (result < 0 && errno==EINTR);
+@@ -1470,7 +1469,7 @@ JNIEXPORT void JNICALL RXTXPort(writeByte)( JNIEnv *env,
+ report( "writeByte: index->writing = 1" );
+ }
+ #endif
+- sprintf( msg, "RXTXPort:writeByte %i\n", result );
++ snprintf( msg, sizeof(msg), "RXTXPort:writeByte %i\n", result );
+ report( msg );
+ LEAVE( "RXTXPort:writeByte" );
+ if(result >= 0)
+@@ -1526,7 +1525,7 @@ JNIEXPORT void JNICALL RXTXPort(writeArray)( JNIEnv *env,
+ ENTER( "writeArray" );
+ /* warning Roy Rogers */
+ /*
+- sprintf( message, "::::RXTXPort:writeArray(%s);\n", (char *) body );
++ snprintf( message, sizeof(message), "::::RXTXPort:writeArray(%s);\n", (char *) body );
+ report_verbose( message );
+ */
+
+@@ -1612,7 +1611,7 @@ JNIEXPORT jboolean JNICALL RXTXPort(nativeDrain)( JNIEnv *env,
+ count++;
+ } while (result && errno==EINTR && count <3);
+
+- sprintf( message, "RXTXPort:drain() returns: %i\n", result );
++ snprintf( message, sizeof(message), "RXTXPort:drain() returns: %i\n", result );
+ report_verbose( message );
+ #if defined(__sun__)
+ /* FIXME: No time to test on all OS's for production */
+@@ -1730,7 +1729,7 @@ JNIEXPORT jboolean JNICALL RXTXPort(isDSR)( JNIEnv *env,
+
+ ENTER( "RXTXPort:isDSR" );
+ ioctl( fd, TIOCMGET, &result );
+- sprintf( message, "RXTXPort:isDSR returns %i\n", result & TIOCM_DSR );
++ snprintf( message, sizeof(message), "RXTXPort:isDSR returns %i\n", result & TIOCM_DSR );
+ report( message );
+ LEAVE( "RXTXPort:isDSR" );
+ if( result & TIOCM_DSR ) return JNI_TRUE;
+@@ -1760,7 +1759,7 @@ JNIEXPORT jboolean JNICALL RXTXPort(isCD)( JNIEnv *env,
+
+ ENTER( "RXTXPort:isCD" );
+ ioctl( fd, TIOCMGET, &result );
+- sprintf( message, "RXTXPort:isCD returns %i\n", result & TIOCM_CD );
++ snprintf( message, sizeof(message), "RXTXPort:isCD returns %i\n", result & TIOCM_CD );
+ LEAVE( "RXTXPort:isCD" );
+ if( result & TIOCM_CD ) return JNI_TRUE;
+ else return JNI_FALSE;
+@@ -1785,7 +1784,7 @@ JNIEXPORT jboolean JNICALL RXTXPort(isCTS)( JNIEnv *env,
+
+ ENTER( "RXTXPort:isCTS" );
+ ioctl( fd, TIOCMGET, &result );
+- sprintf( message, "RXTXPort:isCTS returns %i\n", result & TIOCM_CTS );
++ snprintf( message, sizeof(message), "RXTXPort:isCTS returns %i\n", result & TIOCM_CTS );
+ report( message );
+ LEAVE( "RXTXPort:isCTS" );
+ if( result & TIOCM_CTS ) return JNI_TRUE;
+@@ -1811,7 +1810,7 @@ JNIEXPORT jboolean JNICALL RXTXPort(isRI)( JNIEnv *env,
+
+ ENTER( "RXTXPort:isRI" );
+ ioctl( fd, TIOCMGET, &result );
+- sprintf( message, "RXTXPort:isRI returns %i\n", result & TIOCM_RI );
++ snprintf( message, sizeof(message), "RXTXPort:isRI returns %i\n", result & TIOCM_RI );
+ report( message );
+ LEAVE( "RXTXPort:isRI" );
+ if( result & TIOCM_RI ) return JNI_TRUE;
+@@ -1837,7 +1836,7 @@ JNIEXPORT jboolean JNICALL RXTXPort(isRTS)( JNIEnv *env,
+
+ ENTER( "RXTXPort:isRTS" );
+ ioctl( fd, TIOCMGET, &result );
+- sprintf( message, "RXTXPort:isRTS returns %i\n", result & TIOCM_RTS );
++ snprintf( message, sizeof(message), "RXTXPort:isRTS returns %i\n", result & TIOCM_RTS );
+ report( message );
+ LEAVE( "RXTXPort:isRTS" );
+ if( result & TIOCM_RTS ) return JNI_TRUE;
+@@ -1867,7 +1866,7 @@ JNIEXPORT void JNICALL RXTXPort(setRTS)( JNIEnv *env,
+ if( state == JNI_TRUE ) result |= TIOCM_RTS;
+ else result &= ~TIOCM_RTS;
+ ioctl( fd, TIOCMSET, &result );
+- sprintf( message, "setRTS( %i )\n", state );
++ snprintf( message, sizeof(message), "setRTS( %i )\n", state );
+ report( message );
+ LEAVE( "RXTXPort:setRTS" );
+ return;
+@@ -1894,11 +1893,11 @@ JNIEXPORT void JNICALL RXTXPort(setDSR)( JNIEnv *env,
+ ENTER( "RXTXPort:setDSR()" );
+ ioctl( fd, TIOCMGET, &result );
+
+- sprintf( message, "setDSR( %i )\n", state );
++ snprintf( message, sizeof(message), "setDSR( %i )\n", state );
+ if( state == JNI_TRUE ) result |= TIOCM_DSR;
+ else result &= ~TIOCM_DSR;
+ ioctl( fd, TIOCMSET, &result );
+- sprintf( message, "setDSR( %i )\n", state );
++ snprintf( message, sizeof(message), "setDSR( %i )\n", state );
+ report( message );
+ LEAVE( "RXTXPort:setDSR()" );
+ return;
+@@ -1923,7 +1922,7 @@ JNIEXPORT jboolean JNICALL RXTXPort(isDTR)( JNIEnv *env,
+
+ ENTER( "RXTXPort:isDTR" );
+ ioctl( fd, TIOCMGET, &result );
+- sprintf( message, "isDTR( ) returns %i\n", result& TIOCM_DTR );
++ snprintf( message, sizeof(message), "isDTR( ) returns %i\n", result& TIOCM_DTR );
+ report( message );
+ LEAVE( "RXTXPort:isDTR" );
+ if( result & TIOCM_DTR ) return JNI_TRUE;
+@@ -1952,7 +1951,7 @@ JNIEXPORT void JNICALL RXTXPort(setDTR)( JNIEnv *env,
+ if( state == JNI_TRUE ) result |= TIOCM_DTR;
+ else result &= ~TIOCM_DTR;
+ ioctl( fd, TIOCMSET, &result );
+- sprintf( message, "setDTR( %i )\n", state );
++ snprintf( message, sizeof(message), "setDTR( %i )\n", state );
+ report( message );
+ LEAVE( "RXTXPort:setDTR" );
+ return;
+@@ -2491,7 +2490,7 @@ JNIEXPORT jboolean JNICALL RXTXPort(nativeStaticIsRTS)( JNIEnv *env,
+ return JNI_FALSE;
+ }
+ ioctl( fd, TIOCMGET, &result );
+- sprintf( message, "nativeStaticIsRTS( ) returns %i\n", result& TIOCM_RTS );
++ snprintf( message, sizeof(message), "nativeStaticIsRTS( ) returns %i\n", result& TIOCM_RTS );
+ report( message );
+ LEAVE( "RXTXPort:nativeStaticIsRTS" );
+ if( result & TIOCM_RTS ) return JNI_TRUE;
+@@ -2523,7 +2522,7 @@ JNIEXPORT jboolean JNICALL RXTXPort(nativeStaticIsDSR)( JNIEnv *env,
+ return JNI_FALSE;
+ }
+ ioctl( fd, TIOCMGET, &result );
+- sprintf( message, "nativeStaticIsDSR( ) returns %i\n", result& TIOCM_DSR );
++ snprintf( message, sizeof(message), "nativeStaticIsDSR( ) returns %i\n", result& TIOCM_DSR );
+ report( message );
+ LEAVE( "RXTXPort:nativeStaticIsDSR" );
+ if( result & TIOCM_DSR ) return JNI_TRUE;
+@@ -2555,7 +2554,7 @@ JNIEXPORT jboolean JNICALL RXTXPort(nativeStaticIsDTR)( JNIEnv *env,
+ return JNI_FALSE;
+ }
+ ioctl( fd, TIOCMGET, &result );
+- sprintf( message, "nativeStaticIsDTR( ) returns %i\n", result& TIOCM_DTR );
++ snprintf( message, sizeof(message), "nativeStaticIsDTR( ) returns %i\n", result& TIOCM_DTR );
+ report( message );
+ LEAVE( "RXTXPort:nativeStaticIsDTR" );
+ if( result & TIOCM_DTR ) return JNI_TRUE;
+@@ -2587,7 +2586,7 @@ JNIEXPORT jboolean JNICALL RXTXPort(nativeStaticIsCD)( JNIEnv *env,
+ return JNI_FALSE;
+ }
+ ioctl( fd, TIOCMGET, &result );
+- sprintf( message, "nativeStaticIsCD( ) returns %i\n", result& TIOCM_CD );
++ snprintf( message, sizeof(message), "nativeStaticIsCD( ) returns %i\n", result& TIOCM_CD );
+ report( message );
+ LEAVE( "RXTXPort:nativeStaticIsCD" );
+ if( result & TIOCM_CD ) return JNI_TRUE;
+@@ -2619,7 +2618,7 @@ JNIEXPORT jboolean JNICALL RXTXPort(nativeStaticIsCTS)( JNIEnv *env,
+ return JNI_FALSE;
+ }
+ ioctl( fd, TIOCMGET, &result );
+- sprintf( message, "nativeStaticIsCTS( ) returns %i\n", result& TIOCM_CTS );
++ snprintf( message, sizeof(message), "nativeStaticIsCTS( ) returns %i\n", result& TIOCM_CTS );
+ report( message );
+ LEAVE( "RXTXPort:nativeStaticIsCTS" );
+ if( result & TIOCM_CTS ) return JNI_TRUE;
+@@ -2651,7 +2650,7 @@ JNIEXPORT jboolean JNICALL RXTXPort(nativeStaticIsRI)( JNIEnv *env,
+ return JNI_FALSE;
+ }
+ ioctl( fd, TIOCMGET, &result );
+- sprintf( message, "nativeStaticRI( ) returns %i\n", result& TIOCM_RI );
++ snprintf( message, sizeof(message), "nativeStaticRI( ) returns %i\n", result& TIOCM_RI );
+ report( message );
+ LEAVE( "RXTXPort:nativeStaticIsRI" );
+ if( result & TIOCM_RI ) return JNI_TRUE;
+@@ -3023,7 +3022,7 @@ int read_byte_array( JNIEnv *env,
+ eis->eventflags[SPE_DATA_AVAILABLE] = 0;
+ /*
+ ENTER( "read_byte_array" );
+- sprintf(msg, "read_byte_array requests %i\n", length);
++ snprintf( msg, sizeof(msg), "read_byte_array requests %i\n", length);
+ report( msg );
+ */
+ left = length;
+@@ -3106,7 +3105,7 @@ int read_byte_array( JNIEnv *env,
+ "No data available" );
+ }
+
+- sprintf(msg, "read_byte_array returns %i\n", bytes);
++ snprintf( msg, sizeof(msg), "read_byte_array returns %i\n", bytes);
+ report( msg );
+ LEAVE( "read_byte_array" );
+ report_time_end();
+@@ -3129,7 +3128,7 @@ int read_byte_array( JNIEnv *env,
+
+ report_time_start();
+ ENTER( "read_byte_array" );
+- sprintf(msg, "read_byte_array requests %i\n", length);
++ snprintf( msg, sizeof(msg), "read_byte_array requests %i\n", length);
+ report( msg );
+ left = length;
+ if (timeout >= 0)
+@@ -3152,7 +3151,7 @@ RETRY: if ((ret = READ( fd, buffer + bytes, left )) < 0 )
+ bytes += ret;
+ left -= ret;
+ }
+- sprintf(msg, "read_byte_array returns %i\n", bytes);
++ snprintf( msg, sizeof(msg), "read_byte_array returns %i\n", bytes);
+ report( msg );
+ LEAVE( "read_byte_array" );
+ report_time_end();
+@@ -3436,7 +3435,7 @@ JNIEXPORT jint JNICALL RXTXPort(readByte)( JNIEnv *env,
+ }
+ /*
+ LEAVE( "RXTXPort:readByte" );
+- sprintf( msg, "readByte return(%i)\n", bytes ? buffer[ 0 ] : -1 );
++ snprintf( msg, sizeof(msg), "readByte return(%i)\n", bytes ? buffer[ 0 ] : -1 );
+ report( msg );
+ report_time_end( );
+ */
+@@ -3490,7 +3489,7 @@ JNIEXPORT jint JNICALL RXTXPort(readArray)( JNIEnv *env,
+ return -1;
+ }
+ /*
+- sprintf( msg, "RXTXPort:readArray: %i %i\n", (int) length, bytes);
++ snprintf( msg, sizeof(msg), "RXTXPort:readArray: %i %i\n", (int) length, bytes);
+ report( msg );
+ report_time_end( );
+ LEAVE( "RXTXPort:readArray" );
+@@ -3580,7 +3579,7 @@ JNIEXPORT jint JNICALL RXTXPort(readTerminatedArray)( JNIEnv *env,
+ } while ( bytes > 0 && total < length );
+ (*env)->ReleaseByteArrayElements( env, jbarray, body, 0 );
+ /*
+- sprintf( msg, "RXTXPort:readArray: %i %i\n", (int) length, bytes);
++ snprintf( msg, sizeof(msg), "RXTXPort:readArray: %i %i\n", (int) length, bytes);
+ report( msg );
+ report_time_end( );
+ LEAVE( "RXTXPort:readArray" );
+@@ -3865,7 +3864,7 @@ int port_has_changed_fionread( struct event_info_struct *eis )
+ char message[80];
+
+ rc = ioctl( eis->fd, FIONREAD, &change );
+- sprintf( message, "port_has_changed_fionread: change is %i ret is %i\n", change, eis->ret );
++ snprintf( message, sizeof(message), "port_has_changed_fionread: change is %i ret is %i\n", change, eis->ret );
+ report_verbose( message );
+ #if defined(__unixware__) || defined(__sun__)
+ /*
+@@ -4285,7 +4284,7 @@ JNIEXPORT jboolean JNICALL RXTXCommDriver(testRead)(
+ if( !strcmp( name, "COM1" ) || !strcmp( name, "COM2") )
+ {
+ printf("%s is good\n",name);
+- sprintf( message, "testRead: %s is good!\n", name );
++ snprintf( message, sizeof(message), "testRead: %s is good!\n", name );
+ report( message );
+ (*env)->ReleaseStringUTFChars( env, tty_name, name );
+ return( JNI_TRUE );
+@@ -4631,7 +4630,7 @@ JNIEXPORT jboolean JNICALL RXTXCommDriver(registerKnownPorts)(JNIEnv *env,
+ case PORT_TYPE_RS485: break;
+ case PORT_TYPE_RAW: break;
+ default:
+- sprintf( message, "unknown portType %d handed to \
++ snprintf( message, sizeof(message), "unknown portType %d handed to \
+ native RXTXCommDriver.registerKnownPorts() \
+ method.\n",
+ (int) portType
+@@ -5144,7 +5143,7 @@ int lfs_lock( const char *filename, int pid )
+ if ( !connect( s, ( struct sockaddr * ) &addr, sizeof( addr ) ) == 0 )
+ return 1;
+ ret=recv( s, buffer, size, 0 );
+- sprintf( buffer, "lock %s %i\n", filename, pid );
++ snprintf( buffer, size, "lock %s %i\n", filename, pid );
+ /* printf( "%s", buffer ); */
+ send( s, buffer, strlen(buffer), 0 );
+ ret=recv( s, buffer, size, 0 );
+@@ -5187,7 +5186,7 @@ int lfs_unlock( const char *filename, int pid )
+
+ if ( !connect( s, ( struct sockaddr * ) &addr, sizeof( addr ) ) == 0 )
+ return 1;
+- sprintf( buffer, "unlock %s %i\n", filename, pid );
++ snprintf( buffer, size, "unlock %s %i\n", filename, pid );
+ /* printf( "%s", buffer ); */
+ send( s, buffer, strlen(buffer), 0 );
+ ret = recv( s, buffer, size, 0 );
+@@ -5256,7 +5255,7 @@ int lib_lock_dev_lock( const char *filename, int pid )
+ }
+ if ( dev_lock( filename ) )
+ {
+- sprintf( message,
++ snprintf( message, sizeof(message),
+ "RXTX fhs_lock() Error: creating lock file for: %s: %s\n",
+ filename, strerror(errno) );
+ report_error( message );
+@@ -5307,7 +5306,7 @@ int fhs_lock( const char *filename, int pid )
+ #endif /* __unixware__ */
+ p--;
+ }
+- sprintf( file, "%s/LCK..%s", LOCKDIR, p );
++ snprintf( file, sizeof(file), "%s/LCK..%s", LOCKDIR, p );
+ if ( check_lock_status( filename ) )
+ {
+ report( "fhs_lock() lockstatus fail\n" );
+@@ -5316,18 +5315,18 @@ int fhs_lock( const char *filename, int pid )
+ fd = open( file, O_CREAT | O_WRONLY | O_EXCL, 0444 );
+ if( fd < 0 )
+ {
+- sprintf( message,
++ snprintf( message, sizeof(message),
+ "RXTX fhs_lock() Error: opening lock file: %s: %s\n",
+ file, strerror(errno) );
+ report_error( message );
+ return 1;
+ }
+ sprintf( lockinfo, "%10d\n",(int) getpid() );
+- sprintf( message, "fhs_lock: creating lockfile: %s\n", lockinfo );
++ snprintf( message, sizeof(message), "fhs_lock: creating lockfile: %s\n", lockinfo );
+ report( message );
+ if( ( write( fd, lockinfo, 11 ) ) < 0 )
+ {
+- sprintf( message,
++ snprintf( message, sizeof(message),
+ "RXTX fhs_lock() Error: writing lock file: %s: %s\n",
+ file, strerror(errno) );
+ report_error( message );
+@@ -5387,7 +5386,7 @@ int uucp_lock( const char *filename, int pid )
+ int fd;
+ struct stat buf;
+
+- sprintf( message, "uucp_lock( %s );\n", filename );
++ snprintf( message, sizeof(message), "uucp_lock( %s );\n", filename );
+ report( message );
+
+ if ( check_lock_status( filename ) )
+@@ -5403,11 +5402,11 @@ int uucp_lock( const char *filename, int pid )
+ if ( stat( filename, &buf ) != 0 )
+ {
+ report( "RXTX uucp_lock() could not find device.\n" );
+- sprintf( message, "uucp_lock: device was %s\n", name );
++ snprintf( message, sizeof(message), "uucp_lock: device was %s\n", name );
+ report( message );
+ return 1;
+ }
+- sprintf( lockfilename, "%s/LK.%03d.%03d.%03d",
++ snprintf( lockfilename, sizeof(lockfilename), "%s/LK.%03d.%03d.%03d",
+ LOCKDIR,
+ (int) major( buf.st_dev ),
+ (int) major( buf.st_rdev ),
+@@ -5416,7 +5415,7 @@ int uucp_lock( const char *filename, int pid )
+ sprintf( lockinfo, "%10d\n", (int) getpid() );
+ if ( stat( lockfilename, &buf ) == 0 )
+ {
+- sprintf( message, "RXTX uucp_lock() %s is there\n",
++ snprintf( message, sizeof(message), "RXTX uucp_lock() %s is there\n",
+ lockfilename );
+ report( message );
+ report_error( message );
+@@ -5425,7 +5424,7 @@ int uucp_lock( const char *filename, int pid )
+ fd = open( lockfilename, O_CREAT | O_WRONLY | O_EXCL, 0444 );
+ if( fd < 0 )
+ {
+- sprintf( message,
++ snprintf( message, sizeof(message),
+ "RXTX uucp_lock() Error: opening lock file: %s: %s\n",
+ lockfilename, strerror(errno) );
+ report_error( message );
+@@ -5433,7 +5432,7 @@ int uucp_lock( const char *filename, int pid )
+ }
+ if( ( write( fd, lockinfo, 11 ) ) < 0 )
+ {
+- sprintf( message,
++ snprintf( message, sizeof(message),
+ "RXTX uucp_lock() Error: writing lock file: %s: %s\n",
+ lockfilename, strerror(errno) );
+ report_error( message );
+@@ -5503,7 +5502,7 @@ void fhs_unlock( const char *filename, int openpid )
+ p = ( char * ) filename + i;
+ /* FIXME need to handle subdirectories /dev/cua/... */
+ while( *( p - 1 ) != '/' && i-- != 1 ) p--;
+- sprintf( file, "%s/LCK..%s", LOCKDIR, p );
++ snprintf( file, sizeof(file), "%s/LCK..%s", LOCKDIR, p );
+
+ if( !check_lock_pid( file, openpid ) )
+ {
+@@ -5531,7 +5530,7 @@ void uucp_unlock( const char *filename, int openpid )
+ char file[80], message[80];
+ /* FIXME */
+
+- sprintf( message, "uucp_unlock( %s );\n", filename );
++ snprintf( message, sizeof(message), "uucp_unlock( %s );\n", filename );
+ report( message );
+
+ if ( stat( filename, &buf ) != 0 )
+@@ -5540,7 +5539,7 @@ void uucp_unlock( const char *filename, int openpid )
+ report( "uucp_unlock() no such device\n" );
+ return;
+ }
+- sprintf( file, LOCKDIR"/LK.%03d.%03d.%03d",
++ snprintf( file, sizeof(file), LOCKDIR"/LK.%03d.%03d.%03d",
+ (int) major( buf.st_dev ),
+ (int) major( buf.st_rdev ),
+ (int) minor( buf.st_rdev )
+@@ -5553,13 +5552,13 @@ void uucp_unlock( const char *filename, int openpid )
+ }
+ if( !check_lock_pid( file, openpid ) )
+ {
+- sprintf( message, "uucp_unlock: unlinking %s\n", file );
++ snprintf( message, sizeof(message), "uucp_unlock: unlinking %s\n", file );
+ report( message );
+ unlink(file);
+ }
+ else
+ {
+- sprintf( message, "uucp_unlock: unlinking failed %s\n", file );
++ snprintf( message, sizeof(message), "uucp_unlock: unlinking failed %s\n", file );
+ report( message );
+ }
+ }
+@@ -5595,7 +5594,7 @@ int check_lock_pid( const char *file, int openpid )
+ /* Native threads JVM's have multiple pids */
+ if ( lockpid != getpid() && lockpid != getppid() && lockpid != openpid )
+ {
+- sprintf(message, "check_lock_pid: lock = %s pid = %i gpid=%i openpid=%i\n",
++ snprintf(message, sizeof(message), "check_lock_pid: lock = %s pid = %i gpid=%i openpid=%i\n",
+ pid_buffer, (int) getpid(), (int) getppid(), openpid );
+ report( message );
+ return( 1 );
+@@ -5688,7 +5687,7 @@ int check_group_uucp()
+
+ if( stat( LOCKDIR, &buf) )
+ {
+- sprintf( msg, "check_group_uucp: Can not find Lock Directory: %s\n", LOCKDIR );
++ snprintf( msg, sizeof(msg), "check_group_uucp: Can not find Lock Directory: %s\n", LOCKDIR );
+ report_error( msg );
+ return( 1 );
+ }
+@@ -5712,7 +5711,7 @@ int check_group_uucp()
+ }
+ if( buf.st_gid == list[ group_count ] )
+ return 0;
+- sprintf( msg, "%i %i\n", buf.st_gid, list[ group_count ] );
++ snprintf( msg, sizeof(msg), "%i %i\n", buf.st_gid, list[ group_count ] );
+ report_error( msg );
+ report_error( UUCP_ERROR );
+ return 1;
+@@ -5827,11 +5826,11 @@ int is_device_locked( const char *port_filename )
+ while ( lockprefixes[k] )
+ {
+ /* FHS style */
+- sprintf( file, "%s/%s%s", lockdirs[i],
++ snprintf( file, sizeof(file), "%s/%s%s", lockdirs[i],
+ lockprefixes[k], p );
+ if( stat( file, &buf ) == 0 )
+ {
+- sprintf( message, UNEXPECTED_LOCK_FILE,
++ snprintf( message, sizeof(message), UNEXPECTED_LOCK_FILE,
+ file );
+ report_warning( message );
+ return 1;
+@@ -5839,7 +5838,7 @@ int is_device_locked( const char *port_filename )
+
+ /* UUCP style */
+ stat(port_filename , &buf );
+- sprintf( file, "%s/%s%03d.%03d.%03d",
++ snprintf( file, sizeof(file), "%s/%s%03d.%03d.%03d",
+ lockdirs[i],
+ lockprefixes[k],
+ (int) major( buf.st_dev ),
+@@ -5848,7 +5847,7 @@ int is_device_locked( const char *port_filename )
+ );
+ if( stat( file, &buf ) == 0 )
+ {
+- sprintf( message, UNEXPECTED_LOCK_FILE,
++ snprintf( message, sizeof(message), UNEXPECTED_LOCK_FILE,
+ file );
+ report_warning( message );
+ return 1;
+@@ -5876,7 +5875,7 @@ int is_device_locked( const char *port_filename )
+ #endif /* __unixware__ */
+ p--;
+ }
+- sprintf( file, "%s/%s%s", LOCKDIR, LOCKFILEPREFIX, p );
++ snprintf( file, sizeof(file), "%s/%s%s", LOCKDIR, LOCKFILEPREFIX, p );
+ #else
+ /* UUCP standard locks */
+ if ( stat( port_filename, &buf ) != 0 )
+@@ -5884,7 +5883,7 @@ int is_device_locked( const char *port_filename )
+ report( "RXTX is_device_locked() could not find device.\n" );
+ return 1;
+ }
+- sprintf( file, "%s/LK.%03d.%03d.%03d",
++ snprintf( file, sizeof(file), "%s/LK.%03d.%03d.%03d",
+ LOCKDIR,
+ (int) major( buf.st_dev ),
+ (int) major( buf.st_rdev ),
+@@ -5900,7 +5899,7 @@ int is_device_locked( const char *port_filename )
+ fd=open( file, O_RDONLY );
+ if( fd < 0 )
+ {
+- sprintf( message,
++ snprintf( message, sizeof(message),
+ "RXTX is_device_locked() Error: opening lock file: %s: %s\n",
+ file, strerror(errno) );
+ report_warning( message );
+@@ -5908,7 +5907,7 @@ int is_device_locked( const char *port_filename )
+ }
+ if ( ( read( fd, pid_buffer, 11 ) ) < 0 )
+ {
+- sprintf( message,
++ snprintf( message, sizeof(message),
+ "RXTX is_device_locked() Error: reading lock file: %s: %s\n",
+ file, strerror(errno) );
+ report_warning( message );
+@@ -5921,7 +5920,7 @@ int is_device_locked( const char *port_filename )
+
+ if( kill( (pid_t) pid, 0 ) && errno==ESRCH )
+ {
+- sprintf( message,
++ snprintf( message, sizeof(message),
+ "RXTX Warning: Removing stale lock file. %s\n",
+ file );
+ report_warning( message );
+--
+2.1.0
+
diff --git a/rxtx-2.2-java-version-fix.patch b/rxtx-2.2-java-version-fix.patch
new file mode 100644
index 0000000..ef7794a
--- /dev/null
+++ b/rxtx-2.2-java-version-fix.patch
@@ -0,0 +1,28 @@
+From 543a351b4116191dd34700071451f26e2c898678 Mon Sep 17 00:00:00 2001
+From: Alec Leamas <leamas.alec at gmail.com>
+Date: Wed, 18 Mar 2015 16:53:51 +0100
+Subject: [PATCH] Fix java/lib version mismatch
+
+When loaded, the java library issues a warning about version
+mismatch between the java library and the so-lib. Fix by patching
+the java lib version.
+---
+ src/gnu/io/RXTXVersion.java | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/gnu/io/RXTXVersion.java b/src/gnu/io/RXTXVersion.java
+index 5d94805..ff6d01b 100644
+--- a/src/gnu/io/RXTXVersion.java
++++ b/src/gnu/io/RXTXVersion.java
+@@ -76,7 +76,7 @@ public class RXTXVersion
+
+ static {
+ RXTXVersion.loadLibrary( "rxtxSerial" );
+- Version = "RXTX-2.2";
++ Version = "RXTX-2.2pre2";
+ }
+ /**
+ * static method to return the current version of RXTX
+--
+2.1.0
+
diff --git a/rxtx.spec b/rxtx.spec
index 0294342..55ad39c 100644
--- a/rxtx.spec
+++ b/rxtx.spec
@@ -4,7 +4,7 @@
%global upver 2.2
%global uprel 20100211
-%global rel 0.12
+%global rel 0.14
#global jni %{_jnidir}
%global jni %{_libdir}/%{name}
@@ -28,6 +28,8 @@ Patch2: rxtx-2.2-no-io.h.patch
Patch3: rxtx-2.2-fhs_lock.patch
Patch4: rxtx-2.2-lock.patch
Patch5: rxtx-2.2-Add-Arduino-driver-ttyACM-rxtxcomm-as-device.patch
+Patch6: rxtx-2.2-java-version-fix.patch
+Patch7: rxtx-2.2-convert-strcpy-to-strncpy.patch
#BuildRequires: java-devel >= 1:1.6.0
BuildRequires: java-devel
@@ -55,6 +57,8 @@ sed -e 's|@JNIPATH@|%{jni}|' %{PATCH1} | patch -s -b --suffix .p1 -p1
%if 0%{?fedora} > 13 || 0%{?rhel} > 6
%patch4 -p1
%patch5 -p1
+%patch6 -p1
+%patch7 -p1
%endif
# remove prebuild binaries
find . -name '*.jar' -exec rm {} \;
@@ -89,6 +93,12 @@ ln -s %{_jnidir}/RXTXcomm.jar %{buildroot}%{_datadir}/java/RXTXcomm.jar
%attr(644, root, root) %{_datadir}/maven-metadata/%{name}.xml
%changelog
+* Fri May 01 2015 Alec Leamas <leamas.alec at gmail.com> - 2.2-0.14.20100211
+- Apply patch from bug #1208453 (strcpy -> strncpy).
+
+* Wed Mar 18 2015 Alec Leamas <leamas.alec at gmail.com> - 2.2-0.13.20100211
+- Patch java library version string to match the so-libs's 2.2pre2.
+
* Tue Mar 10 2015 Alec Leamas <leamas.alec at gmail.com> - 2.2-0.12.20100211
- Add Arduino ttyACM + rxtxcomm devices patch
--
cgit v0.10.2
http://pkgs.fedoraproject.org/cgit/rxtx.git/commit/?h=f21&id=be2a16f9ea5227a675645e7c90058e128a93466c
More information about the scm-commits
mailing list