From 8794e39888a71c5dff5161d928229b872db5ffce Mon Sep 17 00:00:00 2001 From: "Liu.andrew.x@gmail.com" Date: Thu, 13 Aug 2015 20:13:55 +0000 Subject: [PATCH] Fix format specifier in proc maps to support 32-bit architectures. R=ivanpe@chromium.org Review URL: https://codereview.chromium.org/1288323003 git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@1486 4c0a9323-5329-0410-9bdc-e9ce6186880e --- src/google_breakpad/processor/proc_maps_linux.h | 4 ++-- src/processor/proc_maps_linux.cc | 8 ++++---- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/src/google_breakpad/processor/proc_maps_linux.h b/src/google_breakpad/processor/proc_maps_linux.h index 22f9f6a4..b8e6eb92 100644 --- a/src/google_breakpad/processor/proc_maps_linux.h +++ b/src/google_breakpad/processor/proc_maps_linux.h @@ -23,8 +23,8 @@ struct MappedMemoryRegion { }; // The address range [start,end) of mapped memory. - uintptr_t start; - uintptr_t end; + uint64_t start; + uint64_t end; // Byte offset into |path| of the range mapped into memory. uint64_t offset; diff --git a/src/processor/proc_maps_linux.cc b/src/processor/proc_maps_linux.cc index 1954cc86..3ba767f3 100644 --- a/src/processor/proc_maps_linux.cc +++ b/src/processor/proc_maps_linux.cc @@ -61,10 +61,10 @@ bool ParseProcMaps(const std::string& input, // The final %n term captures the offset in the input string, which is used // to determine the path name. It *does not* increment the return value. // Refer to man 3 sscanf for details. - if (sscanf(line, "%lx-%lx %4c %lx %hhx:%hhx %ld %n", - ®ion.start, ®ion.end, permissions, ®ion.offset, - ®ion.major_device, ®ion.minor_device, ®ion.inode, - &path_index) < 7) { + if (sscanf(line, "%" SCNx64 "-%" SCNx64 " %4c %" SCNx64" %hhx:%hhx %" + SCNd64 " %n", ®ion.start, ®ion.end, permissions, + ®ion.offset, ®ion.major_device, ®ion.minor_device, + ®ion.inode, &path_index) < 7) { BPLOG(ERROR) << "sscanf failed for line: " << line; return false; }