Merge pull request #5114 from jaschiu/patch-3

fix(privacy): segfault due to use-after-free from get_children()
This commit is contained in:
Alexis Rouillard
2026-07-03 20:52:12 +02:00
committed by GitHub
2 changed files with 3 additions and 3 deletions
+1
View File
@@ -28,6 +28,7 @@ class Privacy : public AModule {
// Config // Config
Gtk::Box box_; Gtk::Box box_;
std::vector<PrivacyItem*> modules_;
uint iconSpacing = 4; uint iconSpacing = 4;
uint iconSize = 20; uint iconSize = 20;
uint transition_duration = 250; uint transition_duration = 250;
+2 -3
View File
@@ -71,6 +71,7 @@ Privacy::Privacy(const std::string& id, const Json::Value& config, Gtk::Orientat
auto* item = Gtk::make_managed<PrivacyItem>(module, nodeType, nodePtr, orientation, pos, auto* item = Gtk::make_managed<PrivacyItem>(module, nodeType, nodePtr, orientation, pos,
iconSize, transition_duration); iconSize, transition_duration);
box_.add(*item); box_.add(*item);
modules_.push_back(item);
} }
} }
@@ -148,9 +149,7 @@ auto Privacy::update() -> void {
bool useAudioOut = false; bool useAudioOut = false;
mutex_.lock(); mutex_.lock();
for (Gtk::Widget* widget : box_.get_children()) { for (PrivacyItem* module : modules_) {
auto* module = dynamic_cast<PrivacyItem*>(widget);
if (module == nullptr) continue;
switch (module->privacy_type) { switch (module->privacy_type) {
case util::PipewireBackend::PRIVACY_NODE_TYPE_VIDEO_INPUT: case util::PipewireBackend::PRIVACY_NODE_TYPE_VIDEO_INPUT:
setScreenshare = true; setScreenshare = true;