Content in dt_fstab is not null terminated in emulator
Value of <dt>/fstab/<partition>/dev and <dt>/fstab/<partition>/type in official Android emulator ends with newline instead of \0, Magisk won’t be able to patch sepolicy and crash the system. Signed-off-by: Shaka Huang <shakalaca@gmail.com>
This commit is contained in:
parent
11102b4dd6
commit
834561a5de
@ -97,6 +97,7 @@ static bool read_dt_fstab(cmdline *cmd, const char *name) {
|
|||||||
if ((fd = open(path, O_RDONLY | O_CLOEXEC)) >= 0) {
|
if ((fd = open(path, O_RDONLY | O_CLOEXEC)) >= 0) {
|
||||||
read(fd, path, sizeof(path));
|
read(fd, path, sizeof(path));
|
||||||
close(fd);
|
close(fd);
|
||||||
|
path[strcspn(path, "\r\n")] = '\0';
|
||||||
// Some custom treble use different names, so use what we read
|
// Some custom treble use different names, so use what we read
|
||||||
char *part = rtrim(strrchr(path, '/') + 1);
|
char *part = rtrim(strrchr(path, '/') + 1);
|
||||||
sprintf(partname, "%s%s", part, strend(part, cmd->slot) ? cmd->slot : "");
|
sprintf(partname, "%s%s", part, strend(part, cmd->slot) ? cmd->slot : "");
|
||||||
@ -104,6 +105,7 @@ static bool read_dt_fstab(cmdline *cmd, const char *name) {
|
|||||||
if ((fd = xopen(path, O_RDONLY | O_CLOEXEC)) >= 0) {
|
if ((fd = xopen(path, O_RDONLY | O_CLOEXEC)) >= 0) {
|
||||||
read(fd, fstype, 32);
|
read(fd, fstype, 32);
|
||||||
close(fd);
|
close(fd);
|
||||||
|
fstype[strcspn(fstype, "\r\n")] = '\0';
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user