[vlc-devel] [PATCH 1/2] dvdnav: Limit user information about insufficient permissions
Rémi Denis-Courmont
remi at remlab.net
Fri May 1 15:43:17 CEST 2020
Le perjantaina 1. toukokuuta 2020, 13.58.21 EEST david.fuhrmann at gmail.com a
écrit :
> From: David Fuhrmann <dfuhrmann at videolan.org>
>
> The mentioned security setting is only relevant for accessing
> RAW block devices (/dev/xxx), which is one of the main use cases
> for this module (accessing an optical drive).
> It is not relevant for file or folder access.
>
> Therefore limit the dialog to only show it in this case.
> dvdnav does not provide a way to get the underlying error back
> to this module, therefore the path is probed again to ensure
> that the actual failure was EPERM.
> ---
> modules/access/dvdnav.c | 21 +++++++++++++++++----
> 1 file changed, 17 insertions(+), 4 deletions(-)
>
> diff --git a/modules/access/dvdnav.c b/modules/access/dvdnav.c
> index f082f1021b..558103eae3 100644
> --- a/modules/access/dvdnav.c
> +++ b/modules/access/dvdnav.c
> @@ -377,10 +377,23 @@ static int AccessDemuxOpen ( vlc_object_t *p_this )
> msg_Warn( p_demux, "cannot open DVD (%s)", psz_file);
>
> #ifdef __APPLE__
> - vlc_dialog_display_error( p_demux, _("Problem accessing a system
> resource"), - _("Potentially, macOS blocks access to your disc.
> "
> - "Please open \"System Preferences\" -> \"Security & Privacy\"
> " - "and allow VLC to access your external media in \"Files
> and Folders\" section."));
> + /* This is only relevant when accessing
> RAW block devices */
> + if( forced && !strncasecmp( psz_file,
> "/dev/", 5) )
That's a very dubious way to identify device nodes.
> + {
> + int fd = vlc_open( psz_file, O_RDONLY | O_NONBLOCK );
> + bool permissionError = ( fd == -1 && errno == EPERM );
> + if( fd != -1 )
> + vlc_close( fd );
And this reinvents access for no obvious reasons.
> +
> + if( permissionError )
> + {
> + msg_Err( p_demux, "Path %s cannot be opened due to
> unsufficient permissions", psz_file ); +
> vlc_dialog_display_error( p_demux, _("Problem accessing a system
> resource"), + _("Potentially, macOS
> blocks access to your disc. " +
> "Please open \"System Preferences\" -> \"Security & Privacy\" " +
> "and allow VLC to access your external
> media in \"Files and Folders\" section.")); + }
> + }
> #endif
> goto bailout;
> }
--
レミ・デニ-クールモン
http://www.remlab.net/
More information about the vlc-devel
mailing list