Fix double free issue in bin_luac.c (#4472)

This commit is contained in:
pelijah 2024-05-05 21:52:30 +03:00 committed by GitHub
parent e283bda5de
commit 464f5bbb95
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -133,12 +133,22 @@ static RzPVector /*<RzBinString *>*/ *strings(RzBinFile *bf) {
return NULL;
}
RzPVector *pvec = rz_pvector_new((RzPVectorFree)rz_bin_string_free);
if (!pvec || !rz_pvector_reserve(pvec, rz_list_length(bin_info_obj->string_list))) {
rz_pvector_free(pvec);
return NULL;
}
RzListIter *iter;
RzBinString *bstr;
RzPVector *pvec = rz_pvector_new((RzPVectorFree)bin_info_obj->string_list->free);
rz_list_foreach (bin_info_obj->string_list, iter, bstr) {
rz_pvector_push(pvec, bstr);
if (bstr) {
rz_pvector_push(pvec, bstr);
}
}
RzListFree free_cb = bin_info_obj->string_list->free;
bin_info_obj->string_list->free = NULL;
rz_list_purge(bin_info_obj->string_list);
bin_info_obj->string_list->free = free_cb;
return pvec;
}