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
This commit is contained in:
Paul Duffin
2018-09-20 11:03:40 +01:00
parent 194170e7f7
commit e9622a3d3a
2 changed files with 20 additions and 2 deletions

View File

@@ -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

View File

@@ -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()