Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found

Target

Select target project
  • eclipse/oniro-core/oniro
  • landgraf/oniro
  • zyga/oniro
  • mrybczyn/oniro
  • agherzan/oniro
  • pcoval/oniro
  • tony3oo3/oniro
  • stefanschmidt/oniro
  • waykovalenko/oniro
  • bero/oniro
  • esben/oniro
  • robertd/oniro
  • pidge/oniro
  • shettygururaj/oniro
  • thierrye/oniro
  • sradakovi/oniro
  • dricci783/oniro
  • ektor5/oniro
  • fldn/oniro
  • lucafavaretto/oniro
  • lucazizolfi/oniro
  • artemkondratiuk/oniro
  • lucaseri/oniro
  • gwozdzcfs/oniro
  • kristis/oniro
  • brgl/oniro
  • heurtemattes/oniro
  • idlethread/oniro
  • lquach/oniro
  • ghassaneben/oniro
  • heurtemattes/oniro-bitbake
  • kzarka/oniro
  • heurtemattes/oniro-migration
  • pastanki/oniro
  • malowe/oniro
  • chaseqi/oniro
  • mrfrank/oniro
37 results
Show changes
Commits on Source (3)
......@@ -28,4 +28,4 @@
(link to upstream patch, merge/pull request)
/label ~bug ~needs-investigation
/label ~Issue:Bug ~needs-investigation ~team::maintenance
# SPDX-FileCopyrightText: Huawei Inc.
#
# SPDX-License-Identifier: Apache-2.0
# CVE-check example script
# Convert the cve-check JSON output to a CSV file
import sys
import getopt
infile = "in.json"
outfile = "out.csv"
show_all = False
def show_syntax_and_exit(code):
"""
Show the program syntax and exit with an errror
Arguments:
code: the error code to return
"""
print("Syntax: %s [-h][-i inputfile][-o outputfile] [-a]" % __name__)
print("Default files: in.json and out.csv")
print("Use -a or -all to list all issues, otherwise we filter only unpatched ones")
sys.exit(code)
def exit_error(code, message):
"""
Show the error message and exit with an errror
Arguments:
code: the error code to return
message: the message to show
"""
print("Error: %s" % message)
sys.exit(code)
def parse_args(argv):
"""
Parse the program arguments, put options in global variables
Arguments:
argv: program arguments
"""
global infile, outfile, show_all
try:
opts, args = getopt.getopt(argv, "hi:o:a", ["input", "output"])
except getopt.GetoptError:
show_syntax_and_exit(1)
for opt, arg in opts:
if opt == "-h":
show_syntax_and_exit(0)
elif opt in ("-i", "--input"):
infile = arg
elif opt in ("-o", "--output"):
outfile = arg
elif opt in ("-a", "--all"):
show_all = True
def load_json(filename):
"""
Load the JSON file, return the resulting dictionary
Arguments:
filename: the file to open
Returns:
Parsed file as a dictionary
"""
import json
out = {}
try:
with open(filename, "r") as f:
out = json.load(f)
except FileNotFoundError:
exit_error(1, "Input file (%s) not found" % (filename))
except json.decoder.JSONDecodeError as error:
exit_error(1, "Malformed JSON file: %s" % str(error))
return out
def write_csv(filename, data, unpatched_only):
"""
Write the resulting CSV with one line for each package
Arguments:
filename: the file to write to
data: dictionary from parsing the JSON file
unpatched_only: True if we want only unpatched issues, False otherwise
Returns:
Parsed file as a dictionary
"""
if not "version" in data or data["version"] != "1":
exit_error(1, "Unrecognized format version number")
if not "package" in data:
exit_error(1, "Mandatory 'package' key not found")
lines = ""
for package in data["package"]:
keys_in_package = {"name", "layer", "version", "issue"}
if keys_in_package - package.keys():
exit_error(
1,
"Missing a mandatory key in package: %s"
% (keys_in_package - package.keys()),
)
package_name = package["name"]
layer = package["layer"]
package_version = package["version"]
for issue in package["issue"]:
keys_in_issue = {"id", "scorev2", "scorev3", "vector", "status"}
if keys_in_issue - issue.keys():
exit_error(
1,
"Missing mandatory keys %s in 'issue' for the package '%s'"
% (keys_in_issue - issue.keys(), package_name),
)
cve_id = issue["id"]
scorev2 = issue["scorev2"]
scorev3 = issue["scorev3"]
vector = issue["vector"]
status = issue["status"]
if (unpatched_only == False) or (status == "Unpatched"):
lines += "%s;%s;%s;%s;%s;%s;%s\n" % (
layer,
package_name,
package_version,
cve_id,
scorev2,
scorev3,
vector,
)
with open(filename, "w") as f:
f.write(lines)
def main(argv):
parse_args(argv)
data = load_json(infile)
write_csv(outfile, data, not show_all)
if __name__ == "__main__":
main(sys.argv[1:])
# SPDX-FileCopyrightText: Huawei Inc.
#
# SPDX-License-Identifier: Apache-2.0
# CVE-check example script
# Produce a list of recipes without CVEs from the JSON cve-check output
import sys
import getopt
infile = "in.json"
outfile = "out.csv"
def show_syntax_and_exit(code):
"""
Show the program syntax and exit with an errror
Arguments:
code: the error code to return
"""
print("Syntax: %s [-h][-i inputfile][-o outputfile]" % __name__)
print("Default files: in.json and out.csv")
sys.exit(code)
def exit_error(code, message):
"""
Show the error message and exit with an errror
Arguments:
code: the error code to return
message: the message to show
"""
print("Error: %s" % message)
sys.exit(code)
def parse_args(argv):
"""
Parse the program arguments, put options in global variables
Arguments:
argv: program arguments
"""
global infile, outfile
try:
opts, args = getopt.getopt(argv, "hi:o:", ["input", "output"])
except getopt.GetoptError:
show_syntax_and_exit(1)
for opt, arg in opts:
if opt == "-h":
show_syntax_and_exit(0)
elif opt in ("-i", "--input"):
infile = arg
elif opt in ("-o", "--output"):
outfile = arg
def load_json(filename):
"""
Load the JSON file, return the resulting dictionary
Arguments:
filename: the file to open
Returns:
Parsed file as a dictionary
"""
import json
out = {}
try:
with open(filename, "r") as f:
out = json.load(f)
except FileNotFoundError:
exit_error(1, "Input file (%s) not found" % (filename))
except json.decoder.JSONDecodeError as error:
exit_error(1, "Malformed JSON file: %s" % str(error))
return out
def write_csv(filename, data):
"""
Write the resulting CSV with one line for each package
Arguments:
filename: the file to write to
data: dictionary from parsing the JSON file
Returns:
Parsed file as a dictionary
"""
with open(filename, "w") as f:
if not "version" in data or data["version"] != "1":
exit_error(1, "Unrecognized format version number")
if not "package" in data:
exit_error(1, "Mandatory 'package' key not found")
for package in data["package"]:
keys_in_package = {"name", "layer", "version", "products"}
if keys_in_package - package.keys():
exit_error(
1,
"Missing a mandatory key in package: %s"
% (keys_in_package - package.keys()),
)
package_name = package["name"]
layer = package["layer"]
package_version = package["version"]
has_cves = "False"
for product in package["products"]:
if not "cvesInRecord" in product:
exit_error(
1, "Missing 'cvesInRecord' for package %s" % package_name
)
if product["cvesInRecord"] == "Yes":
has_cves = "True"
line = "%s;%s;%s;%s\n" % (layer, package_name, package_version, has_cves)
f.write(line)
def main(argv):
global infile, outfile
parse_args(argv)
data = load_json(infile)
write_csv(outfile, data)
if __name__ == "__main__":
main(sys.argv[1:])