← Back to team overview

cairo-dock-team team mailing list archive

[Bug 526138] Re: GMenu does not handle desktop file exec strings properly

 

Actually....

looking further into the Desktop file spec:
http://standards.freedesktop.org/desktop-entry-spec/latest/ar01s06.html

>>>Quoting must be done by enclosing the argument between double quotes
and escaping the double quote character, backtick character ("`"),
dollar sign ("$") and backslash character ("\") by preceding it with an
additional backslash character. Implementations must undo quoting before
expanding field codes and before passing the argument to the executable
program. Reserved characters are space (" "), tab, newline, double
quote, single quote ("'"), backslash character ("\"), greater-than sign
(">"), less-than sign ("<"), tilde ("~"), vertical bar ("|"), ampersand
("&"), semicolon (";"), dollar sign ("$"), asterisk ("*"), question mark
("?"), hash mark ("#"), parenthesis ("(") and (")") and backtick
character ("`"). <<<

-----------------------

Double checking, when quotes are replaced by escaped quotes, the
application opens normally.  So technically, I suppose GMenu does in
fact follow the spec properly.  Interestingly, the menu associated with
gnome-panel does not care whether quotes are properly escaped, so
strictly speaking, the bug is in the gnome-panel menu and in the
installation files for the applications that use the quotes improperly.
However, it does not get noticed except when a program actually adheres
to the spec, so the "bug" here is actually a strict adherence to the
freedesktop spec.

I will look further into gnome-panel and file a report with gnome if
necessary.

-- 
GMenu does not handle desktop file exec strings properly
https://bugs.launchpad.net/bugs/526138
You received this bug notification because you are a member of Cairo-
Dock Team, which is subscribed to Cairo-Dock Core.

Status in Cairo-Dock : Core: New

Bug description:
Using GMenu plugin on cairo-dock-2.1.2.4 on Fedora 12:

Applications in the main menu whose .desktop file exec string contains quotes (single or double) don't get launched.

Example: Launching the application Kst from GMenu
exec=kst -caption "%c" %i %m

cairo-dock -l debug output:
debug   :  (cairo-dock-callbacks.c:cairo_dock_launch_command_full:955)  
  cairo_dock_launch_command_full (kst -caption " , (null))
sh: -c: line 0: unexpected EOF while looking for matching `"'
sh: -c: line 1: syntax error: unexpected end of file

by the time the exec string gets to cairo_dock_launch_command_full, any text appearing after quotes is truncated, causing the program to fail to launch.

workaround: modify .desktop files to remove quotes from exec strings

suggestion: GMenu/applet-utils.c:89 --> change g_key_file_get_string to g_key_file_get_value

Thoughts?  Does this open up any security issues? 

Reasoning:
g_key_file_parse_value_as_string, as called by g_key_file_get_string takes the result of g_key_file_get_value and processes some escape sequences.  However, it does not, for some reason, handle escapes such as \' and \", which mangles the exec string, causing the program not to launch.





References