Revert "adb: Do not use fs_config unless we are root (try 2)."

Revert submission 3001420-main-Ied805bc3912ea0b4e1691127b5032aef632f85fd

Reason for revert: DroidMonitor: Potential culprit for Bug 331999499 - verifying through ABTD before revert submission. This is part of the standard investigation process, and does not mean your CL will be reverted.

Reverted changes: /q/submissionid:3001420-main-Ied805bc3912ea0b4e1691127b5032aef632f85fd

Change-Id: Ibe525a6fd6c01b1f58c67c086306607c4f4d20db
diff --git a/libcutils/abi-dumps/arm64/source-based/libcutils.so.lsdump b/libcutils/abi-dumps/arm64/source-based/libcutils.so.lsdump
index 67c7514..333e61c 100644
--- a/libcutils/abi-dumps/arm64/source-based/libcutils.so.lsdump
+++ b/libcutils/abi-dumps/arm64/source-based/libcutils.so.lsdump
@@ -290,9 +290,6 @@
    "name" : "fs_write_atomic_int"
   },
   {
-   "name" : "get_fs_config"
-  },
-  {
    "name" : "hashmapCreate"
   },
   {
@@ -1277,27 +1274,6 @@
    "source_file" : "system/core/libcutils/include/cutils/fs.h"
   },
   {
-   "function_name" : "get_fs_config",
-   "linker_set_key" : "get_fs_config",
-   "parameters" :
-   [
-    {
-     "referenced_type" : "_ZTIPKc"
-    },
-    {
-     "referenced_type" : "_ZTIb"
-    },
-    {
-     "referenced_type" : "_ZTIPKc"
-    },
-    {
-     "referenced_type" : "_ZTIP9fs_config"
-    }
-   ],
-   "return_type" : "_ZTIb",
-   "source_file" : "system/core/libcutils/include/private/fs_config.h"
-  },
-  {
    "function_name" : "hashmapCreate",
    "linker_set_key" : "hashmapCreate",
    "parameters" :
@@ -2416,15 +2392,6 @@
   },
   {
    "alignment" : 8,
-   "linker_set_key" : "_ZTIP9fs_config",
-   "name" : "fs_config *",
-   "referenced_type" : "_ZTI9fs_config",
-   "self_type" : "_ZTIP9fs_config",
-   "size" : 8,
-   "source_file" : "system/core/libcutils/include/private/fs_config.h"
-  },
-  {
-   "alignment" : 8,
    "linker_set_key" : "_ZTIP9str_parms",
    "name" : "str_parms *",
    "referenced_type" : "_ZTI9str_parms",
@@ -2717,37 +2684,6 @@
    "self_type" : "_ZTI5cnode",
    "size" : 40,
    "source_file" : "system/core/libcutils/include/cutils/config_utils.h"
-  },
-  {
-   "alignment" : 8,
-   "fields" :
-   [
-    {
-     "field_name" : "uid",
-     "referenced_type" : "_ZTIj"
-    },
-    {
-     "field_name" : "gid",
-     "field_offset" : 32,
-     "referenced_type" : "_ZTIj"
-    },
-    {
-     "field_name" : "mode",
-     "field_offset" : 64,
-     "referenced_type" : "_ZTIj"
-    },
-    {
-     "field_name" : "capabilities",
-     "field_offset" : 128,
-     "referenced_type" : "_ZTIm"
-    }
-   ],
-   "linker_set_key" : "_ZTI9fs_config",
-   "name" : "fs_config",
-   "referenced_type" : "_ZTI9fs_config",
-   "self_type" : "_ZTI9fs_config",
-   "size" : 24,
-   "source_file" : "system/core/libcutils/include/private/fs_config.h"
   }
  ],
  "rvalue_reference_types" : []
diff --git a/libcutils/abi-dumps/arm_arm64/source-based/libcutils.so.lsdump b/libcutils/abi-dumps/arm_arm64/source-based/libcutils.so.lsdump
index f75240c..f612fb9 100644
--- a/libcutils/abi-dumps/arm_arm64/source-based/libcutils.so.lsdump
+++ b/libcutils/abi-dumps/arm_arm64/source-based/libcutils.so.lsdump
@@ -300,9 +300,6 @@
    "name" : "fs_write_atomic_int"
   },
   {
-   "name" : "get_fs_config"
-  },
-  {
    "name" : "hashmapCreate"
   },
   {
@@ -1287,27 +1284,6 @@
    "source_file" : "system/core/libcutils/include/cutils/fs.h"
   },
   {
-   "function_name" : "get_fs_config",
-   "linker_set_key" : "get_fs_config",
-   "parameters" :
-   [
-    {
-     "referenced_type" : "_ZTIPKc"
-    },
-    {
-     "referenced_type" : "_ZTIb"
-    },
-    {
-     "referenced_type" : "_ZTIPKc"
-    },
-    {
-     "referenced_type" : "_ZTIP9fs_config"
-    }
-   ],
-   "return_type" : "_ZTIb",
-   "source_file" : "system/core/libcutils/include/private/fs_config.h"
-  },
-  {
    "function_name" : "hashmapCreate",
    "linker_set_key" : "hashmapCreate",
    "parameters" :
@@ -2426,15 +2402,6 @@
   },
   {
    "alignment" : 4,
-   "linker_set_key" : "_ZTIP9fs_config",
-   "name" : "fs_config *",
-   "referenced_type" : "_ZTI9fs_config",
-   "self_type" : "_ZTIP9fs_config",
-   "size" : 4,
-   "source_file" : "system/core/libcutils/include/private/fs_config.h"
-  },
-  {
-   "alignment" : 4,
    "linker_set_key" : "_ZTIP9str_parms",
    "name" : "str_parms *",
    "referenced_type" : "_ZTI9str_parms",
@@ -2727,37 +2694,6 @@
    "self_type" : "_ZTI5cnode",
    "size" : 20,
    "source_file" : "system/core/libcutils/include/cutils/config_utils.h"
-  },
-  {
-   "alignment" : 8,
-   "fields" :
-   [
-    {
-     "field_name" : "uid",
-     "referenced_type" : "_ZTIj"
-    },
-    {
-     "field_name" : "gid",
-     "field_offset" : 32,
-     "referenced_type" : "_ZTIj"
-    },
-    {
-     "field_name" : "mode",
-     "field_offset" : 64,
-     "referenced_type" : "_ZTIt"
-    },
-    {
-     "field_name" : "capabilities",
-     "field_offset" : 128,
-     "referenced_type" : "_ZTIy"
-    }
-   ],
-   "linker_set_key" : "_ZTI9fs_config",
-   "name" : "fs_config",
-   "referenced_type" : "_ZTI9fs_config",
-   "self_type" : "_ZTI9fs_config",
-   "size" : 24,
-   "source_file" : "system/core/libcutils/include/private/fs_config.h"
   }
  ],
  "rvalue_reference_types" : []
diff --git a/libcutils/fs_config.cpp b/libcutils/fs_config.cpp
index 756ff8e..919be2f 100644
--- a/libcutils/fs_config.cpp
+++ b/libcutils/fs_config.cpp
@@ -91,7 +91,7 @@
     { 00751, AID_ROOT,         AID_SHELL,        0, "vendor/bin" },
     { 00751, AID_ROOT,         AID_SHELL,        0, "vendor/apex/*/bin" },
     { 00755, AID_ROOT,         AID_SHELL,        0, "vendor" },
-    {},
+    { 00755, AID_ROOT,         AID_ROOT,         0, 0 },
         // clang-format on
 };
 #ifndef __ANDROID_VNDK__
@@ -228,7 +228,7 @@
     { 00755, AID_ROOT,      AID_SHELL,     0, "vendor/bin/*" },
     { 00755, AID_ROOT,      AID_SHELL,     0, "vendor/apex/*bin/*" },
     { 00755, AID_ROOT,      AID_SHELL,     0, "vendor/xbin/*" },
-    {},
+    { 00644, AID_ROOT,      AID_ROOT,      0, 0 },
         // clang-format on
 };
 #ifndef __ANDROID_VNDK__
@@ -318,8 +318,8 @@
 auto __for_testing_only__fs_config_cmp = fs_config_cmp;
 #endif
 
-bool get_fs_config(const char* path, bool dir, const char* target_out_path,
-                   struct fs_config* fs_conf) {
+void fs_config(const char* path, int dir, const char* target_out_path, unsigned* uid, unsigned* gid,
+               unsigned* mode, uint64_t* capabilities) {
     const struct fs_path_config* pc;
     size_t which, plen;
 
@@ -362,11 +362,11 @@
             if (fs_config_cmp(dir, prefix, len, path, plen)) {
                 free(prefix);
                 close(fd);
-                fs_conf->uid = header.uid;
-                fs_conf->gid = header.gid;
-                fs_conf->mode = header.mode;
-                fs_conf->capabilities = header.capabilities;
-                return true;
+                *uid = header.uid;
+                *gid = header.gid;
+                *mode = (*mode & (~07777)) | header.mode;
+                *capabilities = header.capabilities;
+                return;
             }
             free(prefix);
         }
@@ -375,28 +375,11 @@
 
     for (pc = dir ? android_dirs : android_files; pc->prefix; pc++) {
         if (fs_config_cmp(dir, pc->prefix, strlen(pc->prefix), path, plen)) {
-            fs_conf->uid = pc->uid;
-            fs_conf->gid = pc->gid;
-            fs_conf->mode = pc->mode;
-            fs_conf->capabilities = pc->capabilities;
-            return true;
+            break;
         }
     }
-    return false;
-}
-
-void fs_config(const char* path, int dir, const char* target_out_path, unsigned* uid, unsigned* gid,
-               unsigned* mode, uint64_t* capabilities) {
-    struct fs_config conf;
-    if (get_fs_config(path, dir, target_out_path, &conf)) {
-        *uid = conf.uid;
-        *gid = conf.gid;
-        *mode = (*mode & S_IFMT) | conf.mode;
-        *capabilities = conf.capabilities;
-    } else {
-        *uid = AID_ROOT;
-        *gid = AID_ROOT;
-        *mode = (*mode & S_IFMT) | (dir ? 0755 : 0644);
-        *capabilities = 0;
-    }
+    *uid = pc->uid;
+    *gid = pc->gid;
+    *mode = (*mode & (~07777)) | pc->mode;
+    *capabilities = pc->capabilities;
 }
diff --git a/libcutils/include/private/fs_config.h b/libcutils/include/private/fs_config.h
index 9a727bc..45f46e5 100644
--- a/libcutils/include/private/fs_config.h
+++ b/libcutils/include/private/fs_config.h
@@ -21,11 +21,8 @@
 
 #pragma once
 
-#include <fcntl.h>
-#include <stdbool.h>
 #include <stdint.h>
 #include <sys/cdefs.h>
-#include <unistd.h>
 
 #include <linux/capability.h>
 
@@ -33,27 +30,17 @@
 
 __BEGIN_DECLS
 
-/* This API is deprecated. New users should call get_fs_config. */
+/*
+ * Used in:
+ *  build/tools/fs_config/fs_config.c
+ *  build/tools/fs_get_stats/fs_get_stats.c
+ *  system/extras/ext4_utils/make_ext4fs_main.c
+ *  external/squashfs-tools/squashfs-tools/android.c
+ *  system/core/cpio/mkbootfs.c
+ *  system/core/adb/file_sync_service.cpp
+ *  system/extras/ext4_utils/canned_fs_config.c
+ */
 void fs_config(const char* path, int dir, const char* target_out_path, unsigned* uid, unsigned* gid,
                unsigned* mode, uint64_t* capabilities);
 
-struct fs_config {
-  uid_t uid;
-  gid_t gid;
-  mode_t mode;
-  uint64_t capabilities;
-};
-
-/*
- * If a file system configuration was found for the specified path, store it to *conf.
- * Returns whether a file system configuration was found.
- *
- * dir: Whether path refers to a directory.
- * target_out_path: Path to the base directory to read the file system configuration from, or a null
- * pointer to use the root directory as the base. Host code should pass $ANDROID_PRODUCT_OUT or
- * equivalent, and device code should pass a null pointer.
- */
-bool get_fs_config(const char* path, bool dir, const char* target_out_path,
-                   struct fs_config* conf);
-
 __END_DECLS