binpac: Fix two use-after-free bugs.

This commit is contained in:
Jon Siwek 2013-09-10 11:02:00 -05:00 committed by Tim Wojtulewicz
parent 871541e636
commit cb524c2fde
2 changed files with 7 additions and 2 deletions

View file

@ -16,7 +16,7 @@ public:
void append(string m) { msg_ += m; }
string msg() const { return msg_; }
const char* c_msg() const { return msg().c_str(); }
const char* c_msg() const { return msg_.c_str(); }
protected:
string msg_;

View file

@ -23,6 +23,8 @@ Field::~Field()
void Field::AddAttr(AttrList* attrs)
{
bool delete_attrs = false;
if ( ! attrs_ )
{
attrs_ = attrs;
@ -30,11 +32,14 @@ void Field::AddAttr(AttrList* attrs)
else
{
attrs_->insert(attrs_->end(), attrs->begin(), attrs->end());
delete attrs;
delete_attrs = true;
}
foreach(i, AttrList, attrs)
ProcessAttr(*i);
if ( delete_attrs )
delete attrs;
}
void Field::ProcessAttr(Attr *a)