summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJens Georg <mail@jensge.org>2023-03-15 20:46:01 +0100
committerJens Georg <mail@jensge.org>2023-03-15 20:46:01 +0100
commitdc1d28211d268d7f5819091c207124c373a5a105 (patch)
tree31ecac98ccc9ec9141568540b280c33776a1f813
parent9d956e25418e738abf84ce53c3803bba3f17b066 (diff)
downloadrygel-dc1d28211d268d7f5819091c207124c373a5a105.tar.gz
server: Limit extension detection to files
Do not do random extension detection on uris that are not files Fixes #225
-rw-r--r--src/librygel-server/rygel-media-file-item.vala22
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) {