Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 5134cc01 authored by Yabin Cui's avatar Yabin Cui Committed by Android Git Automerger
Browse files

am 5966e7e5: am 03e590a7: am 7369d314: Merge "Fix alignment when reading note segment."

* commit '5966e7e5':
  Fix alignment when reading note segment.
parents 1dad17c2 5966e7e5
Loading
Loading
Loading
Loading
+4 −2
Original line number Diff line number Diff line
@@ -29,6 +29,8 @@

#include "elf_utils.h"

#define NOTE_ALIGN(size)  ((size + 3) & ~3)

template <typename HdrType, typename PhdrType, typename NhdrType>
static bool get_build_id(
    Backtrace* backtrace, uintptr_t base_addr, uint8_t* e_ident, std::string* build_id) {
@@ -60,7 +62,7 @@ static bool get_build_id(
        addr += sizeof(nhdr);
        if (nhdr.n_type == NT_GNU_BUILD_ID) {
          // Skip the name (which is the owner and should be "GNU").
          addr += nhdr.n_namesz;
          addr += NOTE_ALIGN(nhdr.n_namesz);
          uint8_t build_id_data[128];
          if (nhdr.n_namesz > sizeof(build_id_data)) {
            ALOGE("Possible corrupted note, name size value is too large: %u",
@@ -80,7 +82,7 @@ static bool get_build_id(
        } else {
          // Move past the extra note data.
          hdr_size -= sizeof(nhdr);
          size_t skip_bytes = nhdr.n_namesz + nhdr.n_descsz;
          size_t skip_bytes = NOTE_ALIGN(nhdr.n_namesz) + NOTE_ALIGN(nhdr.n_descsz);
          addr += skip_bytes;
          if (hdr_size < skip_bytes) {
            break;