From e9622a3d3ae3ff6f61aa294aa16a0e232e97f09a Mon Sep 17 00:00:00 2001 From: Paul Duffin Date: Thu, 20 Sep 2018 11:03:40 +0100 Subject: [PATCH] Add serialization methods to whitelist not light greylist Checked the contents of the hiddenapi lists before and after the change and the methods were definitely moved from light greylist to the whitelist. Flashed the device and checked the log and did not see anything out of the ordinary. Test: frameworks/base/tools/hiddenapi/generate_hiddenapi_lists_test.py Change-Id: I9b4b2426251e99495f65ae02a3c2c32ce6966625 --- tools/hiddenapi/generate_hiddenapi_lists.py | 4 ++-- .../hiddenapi/generate_hiddenapi_lists_test.py | 18 ++++++++++++++++++ 2 files changed, 20 insertions(+), 2 deletions(-) diff --git a/tools/hiddenapi/generate_hiddenapi_lists.py b/tools/hiddenapi/generate_hiddenapi_lists.py index 6c46e67be63d5..fdc800bcc177b 100755 --- a/tools/hiddenapi/generate_hiddenapi_lists.py +++ b/tools/hiddenapi/generate_hiddenapi_lists.py @@ -212,8 +212,8 @@ def main(argv): move_from_files(args.input_greylists, uncategorized, light_greylist) move_from_files(args.input_blacklists, uncategorized, blacklist) - # Iterate over all uncategorized members and move serialization API to light greylist. - move_serialization(uncategorized, light_greylist) + # Iterate over all uncategorized members and move serialization API to whitelist. + move_serialization(uncategorized, whitelist) # Extract package names of members from whitelist and light greylist, which # are assumed to have been finalized at this point. Assign all uncategorized diff --git a/tools/hiddenapi/generate_hiddenapi_lists_test.py b/tools/hiddenapi/generate_hiddenapi_lists_test.py index 8f793189650c5..4716241940b5c 100755 --- a/tools/hiddenapi/generate_hiddenapi_lists_test.py +++ b/tools/hiddenapi/generate_hiddenapi_lists_test.py @@ -85,5 +85,23 @@ class TestHiddenapiListGeneration(unittest.TestCase): self.assertEqual( dst, set([ "Lfoo/bar/ClassA;->abc()J", "Lfoo/bar/ClassA;->def()J" ])) + def test_move_serialization(self): + # All the entries should be moved apart from the last one + src = set([ "Lfoo/bar/ClassA;->readObject(Ljava/io/ObjectInputStream;)V", + "Lfoo/bar/ClassA;->readObjectNoData()V", + "Lfoo/bar/ClassA;->readResolve()Ljava/lang/Object;", + "Lfoo/bar/ClassA;->serialVersionUID:J", + "Lfoo/bar/ClassA;->serialPersistentFields:[Ljava/io/ObjectStreamField;", + "Lfoo/bar/ClassA;->writeObject(Ljava/io/ObjectOutputStream;)V", + "Lfoo/bar/ClassA;->writeReplace()Ljava/lang/Object;", + # Should not be moved as signature does not match + "Lfoo/bar/ClassA;->readObject(Ljava/io/ObjectInputStream;)I"]) + expectedToMove = len(src) - 1 + dst = set() + packages = set([ "Lfoo/bar/" ]) + move_serialization(src, dst) + self.assertEqual(len(src), 1) + self.assertEqual(len(dst), expectedToMove) + if __name__ == '__main__': unittest.main()