From: Charles Kerr Date: Mon, 11 Aug 2008 16:04:46 +0000 (+0000) Subject: (daemon) #1177: transmission-remote -a segaults on nonexistent filenames X-Git-Tag: 1.40~535 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=3cb903d36525a8dc9586fe84530f22d100b9253d;p=transmission (daemon) #1177: transmission-remote -a segaults on nonexistent filenames --- diff --git a/daemon/remote.c b/daemon/remote.c index a887cd1ec..f9ccf4028 100644 --- a/daemon/remote.c +++ b/daemon/remote.c @@ -125,9 +125,13 @@ static char* getEncodedMetainfo( const char * filename ) { size_t len = 0; + char * b64 = NULL; uint8_t * buf = tr_loadFile( filename, &len ); - char * b64 = tr_base64_encode( buf, len, NULL ); - tr_free( buf ); + if( buf ) + { + b64 = tr_base64_encode( buf, len, NULL ); + tr_free( buf ); + } return b64; } @@ -219,9 +223,14 @@ readargs( int argc, const char ** argv ) case TR_OPT_UNK: if( addingTorrents ) { char * tmp = getEncodedMetainfo( optarg ); - tr_bencDictAddStr( &top, "method", "torrent-add" ); - tr_bencDictAddStr( args, "metainfo", tmp ); - tr_free( tmp ); + if( tmp ) { + tr_bencDictAddStr( &top, "method", "torrent-add" ); + tr_bencDictAddStr( args, "metainfo", tmp ); + tr_free( tmp ); + } else { + fprintf( stderr, "Couldn't add file: %s\n", optarg ); + addArg = FALSE; + } } else { fprintf( stderr, "Unknown option: %s\n", optarg ); addArg = FALSE;