diff --git a/libtransmission/metainfo.c b/libtransmission/metainfo.c index d554a771d..763e0e991 100644 --- a/libtransmission/metainfo.c +++ b/libtransmission/metainfo.c @@ -200,14 +200,22 @@ tr_metainfoParse( tr_info * inf, const benc_val_t * meta_in, const char * tag ) val = tr_bencDictFindFirst( meta, "comment.utf-8", "comment", NULL ); if( NULL != val && TYPE_STR == val->type ) { - strlcat_utf8( inf->comment, val->val.s.s, sizeof( inf->comment ), 0 ); + char buf[4096]; + memset( buf, 0, sizeof( buf ) ); + strlcat_utf8( buf, val->val.s.s, sizeof( buf ), 0 ); + tr_free( inf->comment ); + inf->comment = tr_strdup( buf ); } /* Creator info */ val = tr_bencDictFindFirst( meta, "created by.utf-8", "created by", NULL ); if( NULL != val && TYPE_STR == val->type ) { - strlcat_utf8( inf->creator, val->val.s.s, sizeof( inf->creator ), 0 ); + char buf[4096]; + memset( buf, 0, sizeof( buf ) ); + strlcat_utf8( buf, val->val.s.s, sizeof( buf ), 0 ); + tr_free( inf->creator ); + inf->creator = tr_strdup( buf ); } /* Date created */ @@ -310,6 +318,8 @@ void tr_metainfoFree( tr_info * inf ) tr_free( inf->pieces ); tr_free( inf->files ); + tr_free( inf->comment ); + tr_free( inf->creator ); tr_free( inf->primaryAddress ); for( i=0; itrackerTiers; ++i ) { diff --git a/libtransmission/transmission.h b/libtransmission/transmission.h index 8de6138de..a5a882cbe 100644 --- a/libtransmission/transmission.h +++ b/libtransmission/transmission.h @@ -645,8 +645,8 @@ struct tr_info char * primaryAddress; /* Torrent info */ - char comment[MAX_PATH_LENGTH]; - char creator[MAX_PATH_LENGTH]; + char * comment; + char * creator; int dateCreated; /* Pieces info */