From b5dfa2834d37a669cce3ca62cb7a56b713d368a2 Mon Sep 17 00:00:00 2001 From: "kmixter@chromium.org" Date: Wed, 8 Dec 2010 22:26:20 +0000 Subject: Reuse code and fix inconsistent array boundaries. R=ted.mielczarek Review URL: http://breakpad.appspot.com/237001 git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@740 4c0a9323-5329-0410-9bdc-e9ce6186880e --- src/client/linux/minidump_writer/linux_dumper.cc | 8 ++++---- src/client/linux/minidump_writer/minidump_writer.cc | 8 ++------ src/client/linux/minidump_writer/minidump_writer_unittest.cc | 2 ++ 3 files changed, 8 insertions(+), 10 deletions(-) (limited to 'src/client/linux') diff --git a/src/client/linux/minidump_writer/linux_dumper.cc b/src/client/linux/minidump_writer/linux_dumper.cc index 4885136e..6e6f4cfa 100644 --- a/src/client/linux/minidump_writer/linux_dumper.cc +++ b/src/client/linux/minidump_writer/linux_dumper.cc @@ -246,7 +246,7 @@ LinuxDumper::ElfFileIdentifierForMapping(unsigned int mapping_id, void* LinuxDumper::FindBeginningOfLinuxGateSharedLibrary(const pid_t pid) const { - char auxv_path[80]; + char auxv_path[NAME_MAX]; BuildProcPath(auxv_path, pid, "auxv"); // If BuildProcPath errors out due to invalid input, we'll handle it when @@ -276,7 +276,7 @@ LinuxDumper::FindBeginningOfLinuxGateSharedLibrary(const pid_t pid) const { bool LinuxDumper::EnumerateMappings(wasteful_vector* result) const { - char maps_path[80]; + char maps_path[NAME_MAX]; BuildProcPath(maps_path, pid_, "maps"); // linux_gate_loc is the beginning of the kernel's mapping of @@ -338,7 +338,7 @@ LinuxDumper::EnumerateMappings(wasteful_vector* result) const { // Parse /proc/$pid/task to list all the threads of the process identified by // pid. bool LinuxDumper::EnumerateThreads(wasteful_vector* result) const { - char task_path[80]; + char task_path[NAME_MAX]; BuildProcPath(task_path, pid_, "task"); const int fd = sys_open(task_path, O_RDONLY | O_DIRECTORY, 0); @@ -373,7 +373,7 @@ bool LinuxDumper::EnumerateThreads(wasteful_vector* result) const { // available. bool LinuxDumper::ThreadInfoGet(pid_t tid, ThreadInfo* info) { assert(info != NULL); - char status_path[80]; + char status_path[NAME_MAX]; BuildProcPath(status_path, tid, "status"); const int fd = open(status_path, O_RDONLY); diff --git a/src/client/linux/minidump_writer/minidump_writer.cc b/src/client/linux/minidump_writer/minidump_writer.cc index bb365a1e..405ec4e8 100644 --- a/src/client/linux/minidump_writer/minidump_writer.cc +++ b/src/client/linux/minidump_writer/minidump_writer.cc @@ -1216,12 +1216,8 @@ class MinidumpWriter { bool WriteProcFile(MDLocationDescriptor* result, pid_t pid, const char* filename) { - char buf[80]; - memcpy(buf, "/proc/", 6); - const unsigned pid_len = my_int_len(pid); - my_itos(buf + 6, pid, pid_len); - buf[6 + pid_len] = '/'; - memcpy(buf + 6 + pid_len + 1, filename, my_strlen(filename) + 1); + char buf[NAME_MAX]; + dumper_.BuildProcPath(buf, pid, filename); return WriteFile(result, buf); } diff --git a/src/client/linux/minidump_writer/minidump_writer_unittest.cc b/src/client/linux/minidump_writer/minidump_writer_unittest.cc index e7a62145..0a3b46f2 100644 --- a/src/client/linux/minidump_writer/minidump_writer_unittest.cc +++ b/src/client/linux/minidump_writer/minidump_writer_unittest.cc @@ -66,6 +66,8 @@ TEST(MinidumpWriterTest, Setup) { char templ[] = TEMPDIR "/minidump-writer-unittest-XXXXXX"; mktemp(templ); + // Set a non-zero tid to avoid tripping asserts. + context.tid = 1; ASSERT_TRUE(WriteMinidump(templ, child, &context, sizeof(context))); struct stat st; ASSERT_EQ(stat(templ, &st), 0); -- cgit v1.2.1