Merge "parse_line: allow -1 for apexes and sdk libraries." into main am: 03700c301b

Original change: https://android-review.googlesource.com/c/platform/system/core/+/3064342

Change-Id: Ie71e613fcf14c60d12d1ae9229c5e600c24e805c
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
This commit is contained in:
Elliott Hughes 2024-04-26 20:12:38 +00:00 committed by Automerger Merge Worker
commit dfdc449373
2 changed files with 8 additions and 13 deletions

View file

@ -33,7 +33,10 @@ typedef struct pkg_info {
/** Package name like "com.android.blah". */
char* name;
/** Package uid like 10014. */
/**
* Package uid like 10014.
* Note that apexes and SDK libraries may have a bogus 0xffffffff value.
*/
uid_t uid;
/** Package's AndroidManifest.xml debuggable flag. */

View file

@ -63,14 +63,13 @@ static bool parse_gids(const char* path, size_t line_number, const char* gids, p
}
static bool parse_line(const char* path, size_t line_number, const char* line, pkg_info* info) {
unsigned long uid;
int debuggable;
char* gid_list;
int profileable_from_shell = 0;
int fields =
sscanf(line, "%ms %lu %d %ms %ms %ms %d %ld", &info->name, &uid, &debuggable, &info->data_dir,
&info->seinfo, &gid_list, &profileable_from_shell, &info->version_code);
sscanf(line, "%ms %u %d %ms %ms %ms %d %ld", &info->name, &info->uid,
&debuggable, &info->data_dir, &info->seinfo, &gid_list,
&profileable_from_shell, &info->version_code);
// Handle the more complicated gids field and free the temporary string.
bool gids_okay = parse_gids(path, line_number, gid_list, info);
@ -84,14 +83,7 @@ static bool parse_line(const char* path, size_t line_number, const char* line, p
return false;
}
// Extra validation.
if (uid > UID_MAX) {
ALOGE("%s:%zu: uid %lu > UID_MAX", path, line_number, uid);
return false;
}
info->uid = uid;
// Integer to bool conversions.
// Convert integers to bools.
info->debuggable = debuggable;
info->profileable_from_shell = profileable_from_shell;