From 2ec34e32c2f402e637fc2494184b624246949503 Mon Sep 17 00:00:00 2001 From: Mark Mentovai Date: Thu, 13 Apr 2017 12:48:25 -0400 Subject: [PATCH] linux: Support 4.10 format for empty Groups: lines in /proc/pid/status The Groups: line unfortunately always had a trailing space, but Linux 4.10 takes this to a new level by including a trailing space even when no groups are present. See commit f7a5f132b447, linux-4.10.10/fs/proc/array.c task_state(). Bug: crashpad:30 Test: crashpad_util_test ProcessInfo.Pid1 Change-Id: If498abd929b27c7f28b69144e7c4928b1626acdb Reviewed-on: https://chromium-review.googlesource.com/477070 Reviewed-by: Joshua Peraza --- util/posix/process_info_linux.cc | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/util/posix/process_info_linux.cc b/util/posix/process_info_linux.cc index 13b15a0d..60b7b7f8 100644 --- a/util/posix/process_info_linux.cc +++ b/util/posix/process_info_linux.cc @@ -209,12 +209,15 @@ bool ProcessInfo::Initialize(pid_t pid) { LOG(ERROR) << "format error: multiple Groups lines"; return false; } - gid_t group; - while (AdvancePastNumber(&line_c, &group)) { - supplementary_groups_.insert(group); - if (!AdvancePastPrefix(&line_c, " ")) { - LOG(ERROR) << "format error: unrecognized Groups format"; - return false; + if (!AdvancePastPrefix(&line_c, " ")) { + // In Linux 4.10, even an empty Groups: line has a trailing space. + gid_t group; + while (AdvancePastNumber(&line_c, &group)) { + supplementary_groups_.insert(group); + if (!AdvancePastPrefix(&line_c, " ")) { + LOG(ERROR) << "format error: unrecognized Groups format"; + return false; + } } } have_groups = true;