[gdb-remote] process properly effective uid

Summary:
Someone wrote SetEffectiveSetEffectiveGroupID instead of SetEffectiveUserID.

After this fix, the android process list can show user names, e.g.

```
PID    PARENT USER       GROUP      EFF USER   EFF GROUP  TRIPLE                               ARGUMENTS
====== ====== ========== ========== ========== ========== ============================== ============================
529    1      root       0          root       0                                         /sbin/ueventd
```
Reviewers: labath,clayborg,aadsm,xiaobai

Subscribers:

llvm-svn: 373953
This commit is contained in:
Walter Erquinigo 2019-10-07 20:26:49 +00:00
parent d457f7e080
commit 8b6dcc1d8c
2 changed files with 7 additions and 3 deletions

View File

@ -8,13 +8,13 @@ from gdbclientutils import *
class TestPlatformClient(GDBRemoteTestBase):
def test_process_list_with_all_users(self):
def test_process_list(self):
"""Test connecting to a remote linux platform"""
class MyResponder(MockGDBServerResponder):
def qfProcessInfo(self, packet):
if "all_users:1" in packet:
return "pid:10;ppid:1;uid:1;gid:1;euid:1;egid:1;name:" + binascii.hexlify("/a/process") + ";args:"
return "pid:10;ppid:1;uid:2;gid:3;euid:4;egid:5;name:" + binascii.hexlify("/a/process") + ";args:"
else:
return "E04"
@ -28,6 +28,10 @@ class TestPlatformClient(GDBRemoteTestBase):
self.assertTrue(self.dbg.GetSelectedPlatform().IsConnected())
self.expect("platform process list -x",
startstr="1 matching process was found", endstr="process" + os.linesep)
self.expect("platform process list -xv",
substrs=[
"PID PARENT USER GROUP EFF USER EFF GROUP",
"10 1 2 3 4 5"])
self.expect("platform process list",
error="error: no processes were found on the \"remote-linux\" platform")
finally:

View File

@ -1906,7 +1906,7 @@ bool GDBRemoteCommunicationClient::DecodeProcessInfoResponse(
} else if (name.equals("euid")) {
uint32_t uid = UINT32_MAX;
value.getAsInteger(0, uid);
process_info.SetEffectiveGroupID(uid);
process_info.SetEffectiveUserID(uid);
} else if (name.equals("gid")) {
uint32_t gid = UINT32_MAX;
value.getAsInteger(0, gid);