[prev in list] [next in list] [prev in thread] [next in thread] 

List:       binutils-cvs
Subject:    [binutils-gdb] bpf: opcodes: fix regression in BPF disassembler
From:       "Jose E. Marchesi via Binutils-cvs" <binutils-cvs () sourceware ! org>
Date:       2023-07-31 13:46:56
Message-ID: 20230731134656.AF3763858CD1 () sourceware ! org
[Download RAW message or body]

https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=5b512234c874d5f82734dc6115765bc691c2c982

commit 5b512234c874d5f82734dc6115765bc691c2c982
Author: Jose E. Marchesi <jose.marchesi@oracle.com>
Date:   Mon Jul 31 15:44:36 2023 +0200

    bpf: opcodes: fix regression in BPF disassembler
    
    This patch fixes a regression recently introduced in the BPF
    disassembler, that was assuming an abfd was always available in
    info->section->owner.  Apparently this is not so in GDB, and therefore
    https://sourceware.org/bugzilla/show_bug.cgi?id=30705.
    
    Tested in bpf-unkonwn-none.
    
    opcodes/ChangeLog:
    
    2023-07-31  Jose E. Marchesi  <jose.marchesi@oracle.com>
    
            PR 30705
            * bpf-dis.c (print_insn_bpf): Check that info->section->owner is
            actually available before using it.

Diff:
---
 opcodes/ChangeLog | 6 ++++++
 opcodes/bpf-dis.c | 2 +-
 2 files changed, 7 insertions(+), 1 deletion(-)

diff --git a/opcodes/ChangeLog b/opcodes/ChangeLog
index 9d33da21627..99f95c64568 100644
--- a/opcodes/ChangeLog
+++ b/opcodes/ChangeLog
@@ -1,3 +1,9 @@
+2023-07-31  Jose E. Marchesi  <jose.marchesi@oracle.com>
+
+	PR 30705
+	* bpf-dis.c (print_insn_bpf): Check that info->section->owner is
+	actually available before using it.
+
 2023-07-30  Jose E. Marchesi  <jose.marchesi@oracle.com>
 
 	* bpf-dis.c: Initialize asm_bpf_version to -1.
diff --git a/opcodes/bpf-dis.c b/opcodes/bpf-dis.c
index a8cb9e8e6db..1b1a532df74 100644
--- a/opcodes/bpf-dis.c
+++ b/opcodes/bpf-dis.c
@@ -147,7 +147,7 @@ print_insn_bpf (bfd_vma pc, disassemble_info *info)
      If the user didn't explicitly specify an ISA version, then derive
      it from the CPU Version flag in the ELF header.  A CPU version of
      0 in the header means "latest version".  */
-  if (asm_bpf_version == -1)
+  if (asm_bpf_version == -1 && info->section && info->section->owner)
     {
       struct bfd *abfd = info->section->owner;
       Elf_Internal_Ehdr *header = elf_elfheader (abfd);
[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic