diff options
| -rw-r--r-- | cmds/installd/InstalldNativeService.cpp | 14 | 
1 files changed, 13 insertions, 1 deletions
diff --git a/cmds/installd/InstalldNativeService.cpp b/cmds/installd/InstalldNativeService.cpp index 7da5642fa3..8146cc6f98 100644 --- a/cmds/installd/InstalldNativeService.cpp +++ b/cmds/installd/InstalldNativeService.cpp @@ -2046,8 +2046,14 @@ binder::Status InstalldNativeService::linkNativeLibraryDirectory(          return error("Failed to stat " + _pkgdir);      } +    char *con = nullptr; +    if (lgetfilecon(pkgdir, &con) < 0) { +        return error("Failed to lgetfilecon " + _pkgdir); +    } +      if (chown(pkgdir, AID_INSTALL, AID_INSTALL) < 0) { -        return error("Failed to chown " + _pkgdir); +        res = error("Failed to chown " + _pkgdir); +        goto out;      }      if (chmod(pkgdir, 0700) < 0) { @@ -2079,7 +2085,13 @@ binder::Status InstalldNativeService::linkNativeLibraryDirectory(          goto out;      } +    if (lsetfilecon(libsymlink, con) < 0) { +        res = error("Failed to lsetfilecon " + _libsymlink); +        goto out; +    } +  out: +    free(con);      if (chmod(pkgdir, s.st_mode) < 0) {          auto msg = "Failed to cleanup chmod " + _pkgdir;          if (res.isOk()) {  |