Skip to content
Snippets Groups Projects
Commit afd14200 authored by Karsten Suehring's avatar Karsten Suehring
Browse files

StreamMergeApp: fix VPS allocation issue

A pointer to a local VPS is passed as reference into the parameter set manager, which takes ownership of the object.
When the local scope is left, the memory will be freed, which can lead to use after free (and double free).
parent c8cd9508
No related branches found
No related tags found
1 merge request!2525StreamMergeApp: fix VPS allocation issue
Pipeline #8944 passed
...@@ -544,12 +544,12 @@ uint32_t StreamMergeApp::mergeStreams() ...@@ -544,12 +544,12 @@ uint32_t StreamMergeApp::mergeStreams()
// Prep other values. // Prep other values.
layer.bs = new InputByteStream(*(layer.fp)); layer.bs = new InputByteStream(*(layer.fp));
VPS vps; VPS* vps = new VPS;
vps.setMaxLayers((uint32_t) layers->size()); vps->setMaxLayers((uint32_t) layers->size());
vps.setLayerId(layer.id, layer.id); // Layer ID is rewritten here. vps->setLayerId(layer.id, layer.id); // Layer ID is rewritten here.
layer.vpsIdMapping.insert({ vps.getVPSId(), 0 }); layer.vpsIdMapping.insert({ vps->getVPSId(), 0 });
vps.setVPSId(0); vps->setVPSId(0);
layer.psManager.storeVPS(&vps, std::vector<uint8_t>()); // Create VPS with default values (VTM slice header parser needs this) layer.psManager.storeVPS(vps, std::vector<uint8_t>()); // Create VPS with default values (VTM slice header parser needs this)
} }
// Loop over layers until every one is entirely read. // Loop over layers until every one is entirely read.
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment