mirror of
https://github.com/transmission/transmission
synced 2025-03-09 13:50:00 +00:00
Don't leak memory when bencode parsing fails.
This commit is contained in:
parent
5fc3a462c8
commit
a2962c4a71
1 changed files with 5 additions and 2 deletions
|
@ -101,21 +101,24 @@ int _tr_bencLoad( char * buf, size_t len, benc_val_t * val, char ** end )
|
||||||
if( tr_bencLoad( cur, len - (cur - buf),
|
if( tr_bencLoad( cur, len - (cur - buf),
|
||||||
&val->val.l.vals[val->val.l.count], &p ) )
|
&val->val.l.vals[val->val.l.count], &p ) )
|
||||||
{
|
{
|
||||||
|
tr_bencFree( val );
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
val->val.l.count++;
|
||||||
if( is_dict && str_expected &&
|
if( is_dict && str_expected &&
|
||||||
val->val.l.vals[val->val.l.count].type != TYPE_STR )
|
val->val.l.vals[val->val.l.count - 1].type != TYPE_STR )
|
||||||
{
|
{
|
||||||
|
tr_bencFree( val );
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
str_expected = !str_expected;
|
str_expected = !str_expected;
|
||||||
|
|
||||||
val->val.l.count++;
|
|
||||||
cur = p;
|
cur = p;
|
||||||
}
|
}
|
||||||
|
|
||||||
if( is_dict && ( val->val.l.count & 1 ) )
|
if( is_dict && ( val->val.l.count & 1 ) )
|
||||||
{
|
{
|
||||||
|
tr_bencFree( val );
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue