forked from quickshell/quickshell
service/pipewire: fix metadata permission checks
This commit is contained in:
parent
fbaec141c0
commit
3ed39b2a79
2 changed files with 11 additions and 3 deletions
|
@ -193,6 +193,13 @@ bool PwDefaultTracker::setConfiguredDefault(const char* key, const QString& valu
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (!meta->hasSetPermission()) {
|
||||||
|
qCCritical(logDefaults
|
||||||
|
) << "Cannot set default node as write+execute permissions are missing for"
|
||||||
|
<< meta;
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
if (value.isEmpty()) {
|
if (value.isEmpty()) {
|
||||||
meta->setProperty(key, "Spa:String:JSON", nullptr);
|
meta->setProperty(key, "Spa:String:JSON", nullptr);
|
||||||
} else {
|
} else {
|
||||||
|
|
|
@ -2,13 +2,13 @@
|
||||||
|
|
||||||
#include <pipewire/core.h>
|
#include <pipewire/core.h>
|
||||||
#include <pipewire/extensions/metadata.h>
|
#include <pipewire/extensions/metadata.h>
|
||||||
|
#include <pipewire/permission.h>
|
||||||
#include <qlogging.h>
|
#include <qlogging.h>
|
||||||
#include <qloggingcategory.h>
|
#include <qloggingcategory.h>
|
||||||
#include <qobject.h>
|
#include <qobject.h>
|
||||||
#include <qstringview.h>
|
#include <qstringview.h>
|
||||||
#include <qtmetamacros.h>
|
#include <qtmetamacros.h>
|
||||||
#include <qtypes.h>
|
#include <qtypes.h>
|
||||||
#include <spa/param/param.h>
|
|
||||||
#include <spa/utils/dict.h>
|
#include <spa/utils/dict.h>
|
||||||
|
|
||||||
#include "registry.hpp"
|
#include "registry.hpp"
|
||||||
|
@ -54,7 +54,7 @@ int PwMetadata::onProperty(
|
||||||
}
|
}
|
||||||
|
|
||||||
bool PwMetadata::hasSetPermission() const {
|
bool PwMetadata::hasSetPermission() const {
|
||||||
return (this->perms & SPA_PARAM_INFO_WRITE) == SPA_PARAM_INFO_WRITE;
|
return (this->perms & (PW_PERM_W | PW_PERM_X)) == (PW_PERM_W | PW_PERM_X);
|
||||||
}
|
}
|
||||||
|
|
||||||
void PwMetadata::setProperty(const char* key, const char* type, const char* value) {
|
void PwMetadata::setProperty(const char* key, const char* type, const char* value) {
|
||||||
|
@ -64,7 +64,8 @@ void PwMetadata::setProperty(const char* key, const char* type, const char* valu
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!this->hasSetPermission()) {
|
if (!this->hasSetPermission()) {
|
||||||
qCCritical(logMeta) << "Tried to change property of" << this << "which is read-only.";
|
qCCritical(logMeta) << "Tried to change property of" << this
|
||||||
|
<< "which is missing write+execute permissions.";
|
||||||
}
|
}
|
||||||
|
|
||||||
pw_metadata_set_property(this->proxy(), PW_ID_CORE, key, type, value);
|
pw_metadata_set_property(this->proxy(), PW_ID_CORE, key, type, value);
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue