libprocessgroup: UIDs in linux are unsigned
We use the %d format specificier for uid_t, which maps to __kernel_uid32_t, which is unsigned. [1] This is undefined behavior which can lead to paths with negative UIDs when erroneously large values are passed for uid: E libprocessgroup: No such cgroup attribute: /sys/fs/cgroup/uid_-89846/cgroup.freeze Fix it with %u. [1] https://cs.android.com/search?q=typedef.*__kernel_uid32_t&ss=android%2Fplatform%2Fsuperproject%2Fmain Change-Id: Ibb52ba2503e30e2f20770b7d23629167e38d076a
This commit is contained in:
parent
89d22239d2
commit
bf2bebd8e7
1 changed files with 1 additions and 1 deletions
|
|
@ -146,7 +146,7 @@ bool ProfileAttribute::GetPathForUID(uid_t uid, std::string* path) const {
|
|||
|
||||
const std::string& file_name =
|
||||
controller()->version() == 2 && !file_v2_name_.empty() ? file_v2_name_ : file_name_;
|
||||
*path = StringPrintf("%s/uid_%d/%s", controller()->path(), uid, file_name.c_str());
|
||||
*path = StringPrintf("%s/uid_%u/%s", controller()->path(), uid, file_name.c_str());
|
||||
return true;
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue