libctf: we do in fact support foreign-endian old versions

The worry that caused this to not be supported was because we don't
bother endian-flipping version-related fields before checking them.
But they're all unsigned chars anyway, and don't need any flipping at
all.

This should be supported and should already work.  Enable it.

libctf/
	* ctf-open.c (ctf_bufopen): Don't prohibit foreign-endian
        upgrades.
This commit is contained in:
Nick Alcock
2024-07-05 15:53:14 +01:00
parent c60b22e8ed
commit 95861bb396

View File

@@ -1474,18 +1474,12 @@ ctf_bufopen (const ctf_sect_t *ctfsect, const ctf_sect_t *symsect,
First, we validate the preamble (common to all versions). At that point, First, we validate the preamble (common to all versions). At that point,
we know the endianness and specific header version, and can validate the we know the endianness and specific header version, and can validate the
version-specific parts including section offsets and alignments. version-specific parts including section offsets and alignments. */
We specifically do not support foreign-endian old versions. */
if (_libctf_unlikely_ (pp->ctp_magic != CTF_MAGIC)) if (_libctf_unlikely_ (pp->ctp_magic != CTF_MAGIC))
{ {
if (pp->ctp_magic == bswap_16 (CTF_MAGIC)) if (pp->ctp_magic == bswap_16 (CTF_MAGIC))
{
if (pp->ctp_version != CTF_VERSION_3)
return (ctf_set_open_errno (errp, ECTF_CTFVERS));
foreign_endian = 1; foreign_endian = 1;
}
else else
return (ctf_set_open_errno (errp, ECTF_NOCTFBUF)); return (ctf_set_open_errno (errp, ECTF_NOCTFBUF));
} }