[PATCH v2] libebl: recognize FDO Packaging Metadata ELF note
Tue Nov 30 11:25:41 GMT 2021
On Thu, 2021-11-25 at 17:02 +0000, Luca Boccassi via Elfutils-devel
> +/* Packaging metadata as defined on
> > https://systemd.io/COREDUMP_PACKAGE_METADATA/ */
> > +#define FDO_PACKAGING_METADATA 0xcafe1a7e
> > +
> > /* Note section name of program property. */
> > #define NOTE_GNU_PROPERTY_SECTION_NAME ".note.gnu.property"
> I could move this definition to an internal header if the change to
> elf.h blocks this patch, if you prefer? Let me know.
It looks like it will be integrated into glibc elf.h later this week.
I'll resync elf.h then and apply the other half of your patch.
While looking at how to implement the json parsing of the note data I
noticed a couple of things that could be clarified in the spec to make
this more clear and less ambiguous.
The spec says "a key-value JSON format", "JSON payload" and "a JSON
string with the structure described below". Which isn't very exact, or
seems to describe multiple different JSON concepts which aren't exactly
the same thing. A JSON string is something different from a JSON object
(which is the only JSON value that has a key-value format). And it
doesn't really make clear what the encoding of the JSON itself is (it
cannot be a JSON string, because that itself is expressed in an
specific character encoding itself).
What I think the spec should say is something like:
"The note data is a single JSON object encoded as a zero terminated
The spec does explain the requirements for JSON numbers, but doesn't
mention any for JSON strings or JSON objects. It would be good to also
explain how to make the strings and objects unambiguous.
For Objects it should require that all names are unique. See section 4
For Strings it should require that \uXXXX escaping isn't used and that
only control characters that have an explicit escape sequence are used
(\b, \n, \f, \r, \t) [if you allow them in the first place, they are
probably confusing and it may be good to simply say that Strings should
not contain any control characters or use \uXXXX escaping]. See section
7 and section 8 in rfc8259.
That should get rid of various corner cases that different parsers are
known to get wrong. Especially \uXXXX escaping is really confusing when
using the UTF-8 encoding (and it is totally necessary since UTF-8 can
express any valid UTF character already).
More information about the Elfutils-devel