diff options
author | Jens Georg <mail@jensge.org> | 2023-03-15 20:46:01 +0100 |
---|---|---|
committer | Jens Georg <mail@jensge.org> | 2023-03-15 20:46:01 +0100 |
commit | dc1d28211d268d7f5819091c207124c373a5a105 (patch) | |
tree | 31ecac98ccc9ec9141568540b280c33776a1f813 /src | |
parent | 9d956e25418e738abf84ce53c3803bba3f17b066 (diff) | |
download | rygel-dc1d28211d268d7f5819091c207124c373a5a105.tar.gz |
server: Limit extension detection to files
Do not do random extension detection on uris that are not files
Fixes #225
Diffstat (limited to 'src')
-rw-r--r-- | src/librygel-server/rygel-media-file-item.vala | 22 |
1 files changed, 16 insertions, 6 deletions
diff --git a/src/librygel-server/rygel-media-file-item.vala b/src/librygel-server/rygel-media-file-item.vala index c22b62a1..94cc22cf 100644 --- a/src/librygel-server/rygel-media-file-item.vala +++ b/src/librygel-server/rygel-media-file-item.vala @@ -192,13 +192,23 @@ public abstract class Rygel.MediaFileItem : MediaItem { string uri_extension = null; // Use the extension from the source content filename, if it has an // extension - string basename = Path.get_basename (this.get_primary_uri ()); - int dot_index = -1; - if (basename != null) { - dot_index = basename.last_index_of ("."); - if (dot_index > -1) { - uri_extension = basename.substring (dot_index + 1); + + try { + var uri = GLib.Uri.parse (this.get_primary_uri (), UriFlags.NONE); + if (uri.get_scheme () == "file") { + string basename = Path.get_basename (this.get_primary_uri ()); + int dot_index = -1; + if (basename != null) { + dot_index = basename.last_index_of ("."); + if (dot_index > -1) { + uri_extension = basename.substring (dot_index + 1); + } + } + } else { + debug ("Uri is not a file, but %s, skipping extension detection", uri.get_scheme()); } + } catch (Error err) { + debug ("Failed to parse primary uri, skipping extension detection"); } if (uri_extension == null) { |