Go to:
Gentoo Home
Documentation
Forums
Lists
Bugs
Planet
Store
Wiki
Get Gentoo!
Gentoo's Bugzilla – Attachment 398766 Details for
Bug 543096
dev-java/rxtx-2.2_pre2 crashes on long device names
Home
|
New
–
[Ex]
|
Browse
|
Search
|
Privacy Policy
|
[?]
|
Reports
|
Requests
|
Help
|
New Account
|
Log In
[x]
|
Forgot Password
Login:
[x]
[patch]
replaces unsafe sprintf with snprintf
rxtx-2.2_pre2-long-devname.patch (text/plain), 11.91 KB, created by
nebojsa
on 2015-03-12 22:29:23 UTC
(
hide
)
Description:
replaces unsafe sprintf with snprintf
Filename:
MIME Type:
Creator:
nebojsa
Created:
2015-03-12 22:29:23 UTC
Size:
11.91 KB
patch
obsolete
>--- rxtx-2.2pre2/src/SerialImp.c.orig 2009-02-04 23:06:16.000000000 +0100 >+++ rxtx-2.2pre2/src/SerialImp.c 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 );
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
Attachments on
bug 543096
: 398766