Fail check-boot-jars if boot jar contains 0 .class files
Protect against an invalid boot jar, e.g. one containing .dex files is
used instead of .class files.
Test: add a prebuilt for framework-tethering
Run `m check-boot-jars` with the first fix from
https://r.android.com/1341756 and the build fails due to no
.class files because a dex jar is used.
Run `m check-boot-jars` with all fixeds from
https://r.android.com/1341756 and the build works.
Bug: 158304459
Bug: 159112414
Merged-In: I0e8ebd318312949bc58ba7a5c89f9e265b8bedf2
Change-Id: I0e8ebd318312949bc58ba7a5c89f9e265b8bedf2
(cherry picked from 92d41de8f2
)
This commit is contained in:
parent
03db4fbbb7
commit
70dd47f0df
|
@ -49,8 +49,10 @@ def CheckJar(allow_list_path, jar):
|
||||||
if p.returncode != 0:
|
if p.returncode != 0:
|
||||||
return False
|
return False
|
||||||
items = stdout.split()
|
items = stdout.split()
|
||||||
|
classes = 0
|
||||||
for f in items:
|
for f in items:
|
||||||
if f.endswith('.class'):
|
if f.endswith('.class'):
|
||||||
|
classes += 1
|
||||||
package_name = os.path.dirname(f)
|
package_name = os.path.dirname(f)
|
||||||
package_name = package_name.replace('/', '.')
|
package_name = package_name.replace('/', '.')
|
||||||
if not package_name or not allow_list_re.match(package_name):
|
if not package_name or not allow_list_re.match(package_name):
|
||||||
|
@ -58,6 +60,9 @@ def CheckJar(allow_list_path, jar):
|
||||||
' not in the allow list %s of packages allowed on the bootclasspath.'
|
' not in the allow list %s of packages allowed on the bootclasspath.'
|
||||||
% (jar, f, package_name, allow_list_path))
|
% (jar, f, package_name, allow_list_path))
|
||||||
return False
|
return False
|
||||||
|
if classes == 0:
|
||||||
|
print >> sys.stderr, ('Error: %s does not contain any class files.' % jar)
|
||||||
|
return False
|
||||||
return True
|
return True
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue