[01/19] libctf: we do in fact support foreign-endian old versions

Message ID 20240730153707.168357-2-nick.alcock@oracle.com
State New
Headers
Series libctf: various bugfixes (including a write into freed memory), and loosen constraints on enums |

Checks

Context Check Description
linaro-tcwg-bot/tcwg_binutils_build--master-arm fail Patch failed to apply
linaro-tcwg-bot/tcwg_binutils_build--master-aarch64 fail Patch failed to apply

Commit Message

Nick Alcock July 30, 2024, 3:36 p.m. UTC
  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.
---
 libctf/ctf-open.c | 10 ++--------
 1 file changed, 2 insertions(+), 8 deletions(-)
  

Patch

diff --git a/libctf/ctf-open.c b/libctf/ctf-open.c
index 2ae0a696c3a..fd6d36edc46 100644
--- a/libctf/ctf-open.c
+++ b/libctf/ctf-open.c
@@ -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,
      we know the endianness and specific header version, and can validate the
-     version-specific parts including section offsets and alignments.
-
-     We specifically do not support foreign-endian old versions.  */
+     version-specific parts including section offsets and alignments.  */
 
   if (_libctf_unlikely_ (pp->ctp_magic != 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
 	return (ctf_set_open_errno (errp, ECTF_NOCTFBUF));
     }