Escaping for paths

Thiago Macieira thiago.macieira at trolltech.com
Thu Jun 15 12:21:00 PDT 2006


Ross Burton wrote:
>Hi,
>
>Several applications are writing methods to escape strings so that they
>can be used in object paths (specifically Network Manager does this, and
>eds-dbus has taken code from NM too).  EDS is using it so that it can
>return an object path of the
>form /org/gnome/evolution/addressbook/[uri], where obviously the URI
>needs to be escaped.
>
>I think it would be useful for DBus to contain a function that escaped
>an arbitrary string so that it could be used in an object path to avoid
>this needless wheel re-inventing.  Anyone else agree?

I discussed this very issue with another developer yesterday. The issue in 
question was bookmarks instead of addressbooks, but it's exactly the same 
use-case.

My conclusion is that we should not provide such a generic method. I 
believe it's dangerous. I'd much rather see the applications internally 
changed to avoid this kind of problem.

In this example, what I would instead propose is that the object 
at /org/gnome/evolution/addressbook provide a method called "FindURI" or 
something similar, which would take the URI and return an object path to 
the internal object. This would have the added benefit of on-demand 
loading, since there's a call before the actual object access.

I also don't believe this kind of functionality belongs in the core 
library. Validation? Yes. Escaping? I don't think so.

The reason why I think it's dangerous is that two different URIs or 
pathnames could escape to the same object path. For example, imagine I 
had addressbooks:
  /home/thiago/address_book-vcf
  /home/thiago/address_book.vcf
(that's a Greek alpha and a Greek beta)

Both would escape to /home/thiago/address_book_vcf or 
_home_thiago_addres_book_vcf. 

The only solution would be to select one of the characters we have to be 
an escape character, like % in URIs. The above example would 
be /home/thiago/address_5fbook_2dvcf 
and /home/thiago/address_5fbook_2evcf, or 
_2fhome_2fthiago_2faddress_5fbook_2dvcf and 
_2fhome_2fthiago_2faddress_5fbook_2evcf. If people push arbitrary data 
into this function, it would have the potential to increase the length 
threefold.

Or to completely escape everything (yielding something ugly like: 
_2f686f6d652f74686961676f2f61646472657373626f6f6b2e7663660a)

-- 
Thiago José Macieira - thiago.macieira AT trolltech.com
Trolltech ASA - Sandakerveien 116, NO-0402 Oslo, Norway
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 191 bytes
Desc: not available
Url : http://lists.freedesktop.org/archives/dbus/attachments/20060615/6b4be933/attachment.pgp


More information about the dbus mailing list