mirror of
https://github.com/NationalSecurityAgency/ghidra.git
synced 2025-10-03 09:49:23 +02:00
GP-0: Validating Python wheel Module.manifest IP
This commit is contained in:
parent
3c68902436
commit
0d24ae38aa
3 changed files with 22 additions and 2 deletions
|
@ -50,7 +50,7 @@ if ("32".equals(System.getProperty("sun.arch.data.model"))) {
|
||||||
* Identify supported Python command
|
* Identify supported Python command
|
||||||
***************************************************************************************/
|
***************************************************************************************/
|
||||||
project.ext.PYTHON3 = findPython3(true)
|
project.ext.PYTHON3 = findPython3(true)
|
||||||
project.ext.PYTHON_DEPS = new HashSet<String>()
|
project.ext.PYTHON_DEPS = new HashMap<Project, Set<File>>()
|
||||||
|
|
||||||
/*********************************************************************************
|
/*********************************************************************************
|
||||||
* Define the location of bin repo
|
* Define the location of bin repo
|
||||||
|
|
|
@ -80,8 +80,13 @@ rootProject.assembleDistribution {
|
||||||
}
|
}
|
||||||
|
|
||||||
ext.distributePyDep = { name ->
|
ext.distributePyDep = { name ->
|
||||||
|
Set<File> wheelFiles = PYTHON_DEPS.get(project)
|
||||||
|
if (wheelFiles == null) {
|
||||||
|
wheelFiles = new HashSet<>()
|
||||||
|
PYTHON_DEPS.put(project, wheelFiles)
|
||||||
|
}
|
||||||
File dep = findPyDep(name)
|
File dep = findPyDep(name)
|
||||||
PYTHON_DEPS.add(dep)
|
wheelFiles.add(dep)
|
||||||
def zipPath = getZipPath(project)
|
def zipPath = getZipPath(project)
|
||||||
rootProject.assembleDistribution {
|
rootProject.assembleDistribution {
|
||||||
into ("${zipPath}/pypkg/dist") {
|
into ("${zipPath}/pypkg/dist") {
|
||||||
|
|
|
@ -43,6 +43,9 @@ task ip {
|
||||||
// gets the external libs from gradle and verifies they are accounted for in the Module.manifest file
|
// gets the external libs from gradle and verifies they are accounted for in the Module.manifest file
|
||||||
checkExternalLibsInMap(moduleManifestIpMap, project)
|
checkExternalLibsInMap(moduleManifestIpMap, project)
|
||||||
|
|
||||||
|
// gets the declared external python wheels and verifies they are accounted for in the Module.manifest file
|
||||||
|
checkExternalPythonWheelsInMap(moduleManifestIpMap, p)
|
||||||
|
|
||||||
// adds the ip info from the Module.manifest file to the map generated from scanning the module files.
|
// adds the ip info from the Module.manifest file to the map generated from scanning the module files.
|
||||||
addModuleManifestIp(ipToFileMap, moduleManifestIpMap)
|
addModuleManifestIp(ipToFileMap, moduleManifestIpMap)
|
||||||
|
|
||||||
|
@ -105,6 +108,18 @@ def checkExternalLibsInMap(Map<String, String> map, Project project) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**********************************************************************************
|
||||||
|
* Gets the python dependences and makes sure each external wheel is accounted for in
|
||||||
|
* the map from the Module.manifest file
|
||||||
|
*********************************************************************************/
|
||||||
|
def checkExternalPythonWheelsInMap(Map<String, String> map, Project project) {
|
||||||
|
PYTHON_DEPS.getOrDefault(project, List.of()).each { dep ->
|
||||||
|
String name = dep.getName() // get just the filename without the path
|
||||||
|
String relativePath = "pypkg/dist/"+name;
|
||||||
|
assert map.containsKey(relativePath) : "No License specified for external python wheel: "+relativePath+ " in module "+project.projectDir
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/*********************************************************************************
|
/*********************************************************************************
|
||||||
* Examines all the files in the module, reads their ip from the header, verifies
|
* Examines all the files in the module, reads their ip from the header, verifies
|
||||||
* that the ip is allowed, and adds an entry to a mapping of the ip to a list of
|
* that the ip is allowed, and adds an entry to a mapping of the ip to a list of
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue