Projects STRLCPY GoReSym Commits 135d1a6a
🤬
  • ■ ■ ■ ■ ■ ■
    debug/pe/file.go
    skipped 77 lines
    78 78   var sign [4]byte
    79 79   r.ReadAt(sign[:], signoff)
    80 80   if !(sign[0] == 'P' && sign[1] == 'E' && sign[2] == 0 && sign[3] == 0) {
    81  - return nil, fmt.Errorf("Invalid PE COFF file signature of %v.", sign)
     81 + return nil, fmt.Errorf("invalid PE file signature: % x", sign)
    82 82   }
    83 83   base = signoff + 4
    84 84   } else {
    skipped 4 lines
    89 89   return nil, err
    90 90   }
    91 91   switch f.FileHeader.Machine {
    92  - case IMAGE_FILE_MACHINE_UNKNOWN, IMAGE_FILE_MACHINE_ARMNT, IMAGE_FILE_MACHINE_AMD64, IMAGE_FILE_MACHINE_I386:
     92 + case IMAGE_FILE_MACHINE_AMD64,
     93 + IMAGE_FILE_MACHINE_ARM64,
     94 + IMAGE_FILE_MACHINE_ARMNT,
     95 + IMAGE_FILE_MACHINE_I386,
     96 + IMAGE_FILE_MACHINE_RISCV32,
     97 + IMAGE_FILE_MACHINE_RISCV64,
     98 + IMAGE_FILE_MACHINE_RISCV128,
     99 + IMAGE_FILE_MACHINE_UNKNOWN:
     100 + // ok
    93 101   default:
    94  - return nil, fmt.Errorf("Unrecognised COFF file header machine value of 0x%x.", f.FileHeader.Machine)
     102 + return nil, fmt.Errorf("unrecognized PE machine: %#x", f.FileHeader.Machine)
    95 103   }
    96 104   
    97 105   var err error
    skipped 1 lines
    99 107   // Read string table.
    100 108   f.StringTable, err = readStringTable(&f.FileHeader, sr)
    101 109   if err != nil {
    102  - f.StringTable = nil // this isn't fatal
     110 + return nil, err
    103 111   }
    104 112   
    105 113   // Read symbol table.
    skipped 9 lines
    115 123   // Seek past file header.
    116 124   _, err = sr.Seek(base+int64(binary.Size(f.FileHeader)), seekStart)
    117 125   if err != nil {
    118  - return nil, fmt.Errorf("failure to seek past the file header: %v", err)
     126 + return nil, err
    119 127   }
    120 128   
    121 129   // Read optional header.
    skipped 210 lines
    332 340   return nil, nil
    333 341   }
    334 342   
    335  - pe64 := f.Machine == IMAGE_FILE_MACHINE_AMD64
     343 + _, pe64 := f.OptionalHeader.(*OptionalHeader64)
    336 344   
    337 345   // grab the number of data directory entries
    338 346   var dd_length uint32
    skipped 21 lines
    360 368   var ds *Section
    361 369   ds = nil
    362 370   for _, s := range f.Sections {
    363  - if s.VirtualAddress <= idd.VirtualAddress && idd.VirtualAddress < s.VirtualAddress+s.VirtualSize {
     371 + // We are using distance between s.VirtualAddress and idd.VirtualAddress
     372 + // to avoid potential overflow of uint32 caused by addition of s.VirtualSize
     373 + // to s.VirtualAddress.
     374 + if s.VirtualAddress <= idd.VirtualAddress && idd.VirtualAddress-s.VirtualAddress < s.VirtualSize {
    364 375   ds = s
    365 376   break
    366 377   }
    skipped 259 lines
  • ■ ■ ■ ■ ■ ■
    debug/pe/pe.go
    skipped 88 lines
    89 89  }
    90 90   
    91 91  const (
    92  - IMAGE_FILE_MACHINE_UNKNOWN = 0x0
    93  - IMAGE_FILE_MACHINE_AM33 = 0x1d3
    94  - IMAGE_FILE_MACHINE_AMD64 = 0x8664
    95  - IMAGE_FILE_MACHINE_ARM = 0x1c0
    96  - IMAGE_FILE_MACHINE_ARMNT = 0x1c4
    97  - IMAGE_FILE_MACHINE_ARM64 = 0xaa64
    98  - IMAGE_FILE_MACHINE_EBC = 0xebc
    99  - IMAGE_FILE_MACHINE_I386 = 0x14c
    100  - IMAGE_FILE_MACHINE_IA64 = 0x200
    101  - IMAGE_FILE_MACHINE_M32R = 0x9041
    102  - IMAGE_FILE_MACHINE_MIPS16 = 0x266
    103  - IMAGE_FILE_MACHINE_MIPSFPU = 0x366
    104  - IMAGE_FILE_MACHINE_MIPSFPU16 = 0x466
    105  - IMAGE_FILE_MACHINE_POWERPC = 0x1f0
    106  - IMAGE_FILE_MACHINE_POWERPCFP = 0x1f1
    107  - IMAGE_FILE_MACHINE_R4000 = 0x166
    108  - IMAGE_FILE_MACHINE_SH3 = 0x1a2
    109  - IMAGE_FILE_MACHINE_SH3DSP = 0x1a3
    110  - IMAGE_FILE_MACHINE_SH4 = 0x1a6
    111  - IMAGE_FILE_MACHINE_SH5 = 0x1a8
    112  - IMAGE_FILE_MACHINE_THUMB = 0x1c2
    113  - IMAGE_FILE_MACHINE_WCEMIPSV2 = 0x169
     92 + IMAGE_FILE_MACHINE_UNKNOWN = 0x0
     93 + IMAGE_FILE_MACHINE_AM33 = 0x1d3
     94 + IMAGE_FILE_MACHINE_AMD64 = 0x8664
     95 + IMAGE_FILE_MACHINE_ARM = 0x1c0
     96 + IMAGE_FILE_MACHINE_ARMNT = 0x1c4
     97 + IMAGE_FILE_MACHINE_ARM64 = 0xaa64
     98 + IMAGE_FILE_MACHINE_EBC = 0xebc
     99 + IMAGE_FILE_MACHINE_I386 = 0x14c
     100 + IMAGE_FILE_MACHINE_IA64 = 0x200
     101 + IMAGE_FILE_MACHINE_LOONGARCH32 = 0x6232
     102 + IMAGE_FILE_MACHINE_LOONGARCH64 = 0x6264
     103 + IMAGE_FILE_MACHINE_M32R = 0x9041
     104 + IMAGE_FILE_MACHINE_MIPS16 = 0x266
     105 + IMAGE_FILE_MACHINE_MIPSFPU = 0x366
     106 + IMAGE_FILE_MACHINE_MIPSFPU16 = 0x466
     107 + IMAGE_FILE_MACHINE_POWERPC = 0x1f0
     108 + IMAGE_FILE_MACHINE_POWERPCFP = 0x1f1
     109 + IMAGE_FILE_MACHINE_R4000 = 0x166
     110 + IMAGE_FILE_MACHINE_SH3 = 0x1a2
     111 + IMAGE_FILE_MACHINE_SH3DSP = 0x1a3
     112 + IMAGE_FILE_MACHINE_SH4 = 0x1a6
     113 + IMAGE_FILE_MACHINE_SH5 = 0x1a8
     114 + IMAGE_FILE_MACHINE_THUMB = 0x1c2
     115 + IMAGE_FILE_MACHINE_WCEMIPSV2 = 0x169
     116 + IMAGE_FILE_MACHINE_RISCV32 = 0x5032
     117 + IMAGE_FILE_MACHINE_RISCV64 = 0x5064
     118 + IMAGE_FILE_MACHINE_RISCV128 = 0x5128
    114 119  )
    115 120   
    116 121  // IMAGE_DIRECTORY_ENTRY constants
    skipped 71 lines
Please wait...
Page is in error, reload to recover