From 906bd1446c99334b7532b824b740914b7d1b3f20 Mon Sep 17 00:00:00 2001 From: Fred Gleason Date: Mon, 6 Nov 2023 14:27:01 -0500 Subject: [PATCH] 2023-11-06 Fred Gleason * Fixed a bug in rdairplay(1) that allowed access to the Voice Tracker even when the current user had the 'Voicetrack Logs' privilege revoked. Signed-off-by: Fred Gleason --- ChangeLog | 4 ++++ rdairplay/local_macros.cpp | 11 ++++++++++- rdairplay/rdairplay.cpp | 5 +++++ 3 files changed, 19 insertions(+), 1 deletion(-) diff --git a/ChangeLog b/ChangeLog index 7e7fa7aa..15a66aea 100644 --- a/ChangeLog +++ b/ChangeLog @@ -24452,3 +24452,7 @@ * Added a 'RDTrackerWidget::activeChanged()' signal. * Fixed a bug in rdairplay(1) that caused a segfault when attempting to unload a log from the voice tracker while the tracker was active. +2023-11-06 Fred Gleason + * Fixed a bug in rdairplay(1) that allowed access to the Voice + Tracker even when the current user had the 'Voicetrack Logs' + privilege revoked. diff --git a/rdairplay/local_macros.cpp b/rdairplay/local_macros.cpp index e42070c6..d7ad8a92 100644 --- a/rdairplay/local_macros.cpp +++ b/rdairplay/local_macros.cpp @@ -798,7 +798,16 @@ void MainWidget::RunLocalMacros(RDMacro *rml) break; case 4: // Voice Tracker - trackerButtonData(); + if(rda->user()->voicetrackLog()) { + trackerButtonData(); + } + else { + if(rml->echoRequested()) { + rml->acknowledge(false); + rda->ripc()->sendRml(rml); + } + return; + } break; } diff --git a/rdairplay/rdairplay.cpp b/rdairplay/rdairplay.cpp index f69abfa0..821fd2cf 100644 --- a/rdairplay/rdairplay.cpp +++ b/rdairplay/rdairplay.cpp @@ -1252,6 +1252,7 @@ void MainWidget::userData() bool delete_allowed=rda->user()->removefromLog(); bool arrange_allowed=rda->user()->arrangeLog(); bool playout_allowed=rda->user()->playoutLog(); + bool tracking_allowed=rda->user()->voicetrackLog(); air_add_button->setEnabled(add_allowed&&arrange_allowed&&playout_allowed); air_move_button->setEnabled(arrange_allowed&&playout_allowed); @@ -1262,6 +1263,10 @@ void MainWidget::userData() air_log_list[i]->userChanged(add_allowed,delete_allowed, arrange_allowed,playout_allowed); } + air_tracker_button->setEnabled(tracking_allowed); + if((!tracking_allowed)&&air_tracker->isVisible()) { + fullLogButtonData(0); + } }