Fix random return value of faccessat() in x86

faccessat() should return 0 when success, but it returns random number with errno == 0 in x86 platform.

It’s a side effect of commit bf80b08b5f when magisk binaries ‘corretly’ linked with library of API16 .. lol

Co-authored-by: John Wu <topjohnwu@gmail.com>
This commit is contained in:
Shaka Huang
2021-04-04 18:04:09 +08:00
committed by GitHub
parent dfe1f2c108
commit 3da318b48e
3 changed files with 16 additions and 1 deletions

View File

@@ -108,7 +108,7 @@ void mv_dir(int src, int dest) {
for (dirent *entry; (entry = xreaddir(dir.get()));) {
switch (entry->d_type) {
case DT_DIR:
if (faccessat(dest, entry->d_name, F_OK, 0) == 0) {
if (xfaccessat(dest, entry->d_name) == 0) {
// Destination folder exists, needs recursive move
int newsrc = xopenat(src, entry->d_name, O_RDONLY | O_CLOEXEC);
int newdest = xopenat(dest, entry->d_name, O_RDONLY | O_CLOEXEC);