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
This commit is contained in:
kmixter@chromium.org 2010-12-08 22:26:20 +00:00
parent 8322cd6586
commit b5dfa2834d
3 changed files with 8 additions and 10 deletions

View file

@ -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<MappingInfo*>* 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<MappingInfo*>* result) const {
// Parse /proc/$pid/task to list all the threads of the process identified by
// pid.
bool LinuxDumper::EnumerateThreads(wasteful_vector<pid_t>* 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<pid_t>* 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);

View file

@ -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);
}

View file

@ -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);