[PATCH] elf: Replace tst-p_alignmod1-editX with a python script

Florian Weimer fweimer@redhat.com
Wed Jan 26 10:09:20 GMT 2022


* Adhemerval Zanella via Libc-alpha:

> diff --git a/scripts/tst-elf-edit.py b/scripts/tst-elf-edit.py
> new file mode 100644
> index 0000000000..1fb9b8e0fe
> --- /dev/null
> +++ b/scripts/tst-elf-edit.py
> @@ -0,0 +1,206 @@

> +class Elf_Ehdr:
> +    def __init__(self, e_ident):
> +        endian, addr, off = elf_types_fmts(e_ident)
> +        self.fmt = '{0}HHI{1}{2}{2}IHHHHHH'.format(endian, addr, off)
> +        self.len = struct.calcsize(self.fmt)
> +
> +    def read(self, f):
> +        buf = f.read(self.len)
> +        if not buf:
> +            error('{}: header too small'.format(f.name))

I think you need to check len(buf) < self.len.

> +class Elf_Phdr:
> +    def __init__(self, e_ident):
> +        endian, addr, off = elf_types_fmts(e_ident)
> +        self.ei_class = e_ident[EI_CLASS]
> +        if self.ei_class == ELFCLASS32:
> +            self.fmt = '{0}I{2}{1}{1}IIII'.format(endian, addr, off)
> +        else:
> +            self.fmt = '{0}II{2}{1}{1}QQQ'.format(endian, addr, off)
> +        self.len = struct.calcsize(self.fmt)
> +
> +    def read(self, f):
> +        buf = f.read(self.len)
> +        if not buf:
> +            error('{}: program header too small'.format(f.name))

Here as well.

Rest looks okay.

Thanks,
Florian



More information about the Libc-alpha mailing list