diff options
author | Noah Sanci <nsanci@redhat.com> | 2021-07-16 15:16:20 -0400 |
---|---|---|
committer | Mark Wielaard <mark@klomp.org> | 2021-07-22 14:10:24 +0200 |
commit | 9ab0c139eebf4ba40ac721224a673e4b66d29cd9 (patch) | |
tree | 6c77b84cf0979d04d52b0d02d5ffe54c388173ae /doc | |
parent | 3709516ee0bdc38f736eaf6cee440c85bf6059dd (diff) | |
download | elfutils-9ab0c139eebf4ba40ac721224a673e4b66d29cd9.tar.gz |
debuginfod: PR28034 - client-side %-escape url characters
When requesting some source files, some URL-inconvenient chars
sometimes pop up. Example from f33 libstdc++:
/buildid/44d8485cb75512c2ca5c8f70afbd475cae30af4f/source/usr/src/debug/
gcc-10.3.1-1.fc33.x86_64/obj-x86_64-redhat-linux/x86_64-redhat-linux/
libstdc++-v3/src/c++11/../../../../../libstdc++-v3/src/c++11/
condition_variable.cc
As this URL is passed into debuginfod's handler_cb, it appears that the
+ signs are helpfully unescaped to spaces by libmicrohttpd, which
'course breaks everything.
In order to ensure the server properly parses urls such as this one,
%-escape characters on the client side so that the correct url
is preserved and properly processed on the server side.
https://sourceware.org/bugzilla/show_bug.cgi?id=28034
Signed-off-by: Noah Sanci <nsanci@redhat.com>
Diffstat (limited to 'doc')
-rw-r--r-- | doc/debuginfod.8 | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/doc/debuginfod.8 b/doc/debuginfod.8 index d83c7cdb..f70af625 100644 --- a/doc/debuginfod.8 +++ b/doc/debuginfod.8 @@ -309,6 +309,10 @@ l l. \../bar/foo.c AT_comp_dir=/zoo/ /buildid/BUILDID/source/zoo//../bar/foo.c .TE +Note: the client should %-escape characters in /SOURCE/FILE that are +not shown as "unreserved" in section 2.3 of RFC3986. Some characters +that will be escaped include "+", "\\", "$", "!", the 'space' character, +and ";". RFC3986 includes a more comprehensive list of these characters. .SS /metrics This endpoint returns a Prometheus formatted text/plain dump of a |