--- rxtx-2.2pre2/src/SerialImp.c.orig 2009-02-04 23:06:16.000000000 +0100 +++ rxtx-2.2pre2/src/SerialImp.c.orig 2015-03-12 22:53:09.565351101 +0100 @@ -679,14 +679,14 @@ 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()' */ @@ -712,7 +712,7 @@ 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 ); @@ -724,7 +724,7 @@ 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( ); @@ -1652,7 +1652,7 @@ 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 */ @@ -1770,7 +1770,7 @@ 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; @@ -1800,7 +1800,7 @@ 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; @@ -1825,7 +1825,7 @@ 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; @@ -1851,7 +1851,7 @@ 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; @@ -1877,7 +1877,7 @@ 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; @@ -1907,7 +1907,7 @@ 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; @@ -1934,11 +1934,11 @@ 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; @@ -1963,7 +1963,7 @@ 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; @@ -1992,7 +1992,7 @@ 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; @@ -2531,7 +2531,7 @@ 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; @@ -2563,7 +2563,7 @@ 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; @@ -2595,7 +2595,7 @@ 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; @@ -2627,7 +2627,7 @@ 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; @@ -2659,7 +2659,7 @@ 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; @@ -2691,7 +2691,7 @@ 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; @@ -3897,7 +3897,7 @@ 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 ); #if defined(__unixware__) || defined(__sun__) /* On SCO OpenServer FIONREAD always fails for serial devices, @@ -3908,7 +3908,7 @@ if( (rc != -1 && change) || (rc == -1 && eis->ret > 0) ) return( 1 ); #else - sprintf( message, "port_has_changed_fionread: change is %i\n", change ); + snprintf( message, sizeof(message), "port_has_changed_fionread: change is %i\n", change ); report_verbose( message ); if( change ) return( 1 ); @@ -4316,7 +4316,7 @@ 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 ); @@ -4661,7 +4661,7 @@ 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 @@ -5301,7 +5301,7 @@ } 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 ); @@ -5361,14 +5361,14 @@ fd = open( file, O_CREAT | O_WRONLY | O_EXCL, 0444 ); if( fd < 0 ) { - sprintf( message, + snprintf( message,sizeof(message), "RXTX fhs_lock() Error: creating 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 ); write( fd, lockinfo, 11 ); close( fd ); @@ -5424,7 +5424,7 @@ 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 ) ) @@ -5440,7 +5440,7 @@ 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; } @@ -5453,7 +5453,7 @@ 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 ); @@ -5462,7 +5462,7 @@ fd = open( lockfilename, O_CREAT | O_WRONLY | O_EXCL, 0444 ); if( fd < 0 ) { - sprintf( message, + snprintf( message, sizeof(message), "RXTX uucp_lock() Error: creating lock file: %s\n", lockfilename ); report_error( message ); @@ -5560,7 +5560,7 @@ 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 ) @@ -5582,13 +5582,13 @@ } 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 ); } } @@ -5624,7 +5624,7 @@ /* 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 ); @@ -5860,7 +5860,7 @@ 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; @@ -5877,7 +5877,7 @@ ); if( stat( file, &buf ) == 0 ) { - sprintf( message, UNEXPECTED_LOCK_FILE, + snprintf( message, sizeof(message), UNEXPECTED_LOCK_FILE, file ); report_warning( message ); return 1; @@ -5934,7 +5934,7 @@ 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 );