Constant G_URI_RESERVED_CHARS_ALLOWED_IN_PATH in https://github.com/xfce-mirror/exo/blob/master/exo-open/main.c#L207 filtered all characters after # in path. Example : exo-open "/home/foo/bar#foo.doc" not opened and message file:///home/foo/bar not found. May be In function exo_open_get_path need replace contsant G_URI_RESERVED_CHARS_ALLOWED_IN_PATH to G_URI_RESERVED_CHARS_GENERIC_DELIMITERS. *sorry. I used translate.google.com
I am unable to reproduce this with exo 0.12.2. Can you please try this again with a recent release?
Requirements : echo Hello good > /tmp/evil.deb#1.txt echo Hello bad> /tmp/evil.deb\\ echo Hello bad> /tmp/evil.deb Version 0.12.0 : all good Version 0.11.0 partial reproduce : strace ./exo-open/exo-open "/tmp/evil.deb#1.txt" 2>&1 | grep evil - see in strace lstat("/tmp/evil.deb\\#source.txt", 0x7ffe08f13e30) = -1 ENOENT (No such file or directory) Version : 0.9.0/0.10.0 reproduce -> strace ./exo-open/exo-open "/tmp/evil.deb#1.txt" 2>&1 | grep evil -> see in strace lstat("/tmp/evil.deb\\", {st_mode=S_IFREG|0644, st_size=10, ...}) = 0 Version 0.8.0 : not builded Version 0.7.0/0.6.0 : strace ./exo-open/exo-open "/tmp/evil.deb#1.txt" 2>&1 | grep evil - see in strace lstat("/tmp/evil.deb", {st_mode=S_IFREG|0644, st_size=12, ...}) = 0