From 3f25d101e0187f9cef6f45b9078db30041a0628d Mon Sep 17 00:00:00 2001 From: Charles Kerr Date: Thu, 21 Aug 2008 17:03:44 +0000 Subject: [PATCH] fix metainfo bug from earlier today. (m1b, andersos) --- libtransmission/bencode.c | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/libtransmission/bencode.c b/libtransmission/bencode.c index 4184f2cb5..4a33b00dd 100644 --- a/libtransmission/bencode.c +++ b/libtransmission/bencode.c @@ -144,7 +144,7 @@ tr_bencParseStr( const uint8_t * buf, return TR_ERROR; *setme_end = end + 1 + len; - *setme_str = (uint8_t*) tr_strndup( end + 1, len ); + *setme_str = tr_memdup( end+1, len ); *setme_strlen = len; return TR_OK; } @@ -509,8 +509,15 @@ void tr_bencInitStr( tr_benc * val, const void * str, int len ) { tr_bencInit( val, TYPE_STR ); + val->val.s.s = tr_strndup( str, len ); - val->val.s.i = val->val.s.s ? strlen( val->val.s.s ) : 0; + + if( val->val.s.s == NULL ) + val->val.s.i = 0; + else if( len < 0 ) + val->val.s.i = strlen( val->val.s.s ); + else + val->val.s.i = len; } void