diff options
Diffstat (limited to 'meta')
-rw-r--r-- | meta/classes/cve-check.bbclass | 16 |
1 files changed, 15 insertions, 1 deletions
diff --git a/meta/classes/cve-check.bbclass b/meta/classes/cve-check.bbclass index f44bbed6ac..bc2f03f7dd 100644 --- a/meta/classes/cve-check.bbclass +++ b/meta/classes/cve-check.bbclass | |||
@@ -118,10 +118,24 @@ def get_patches_cves(d): | |||
118 | 118 | ||
119 | pn = d.getVar("PN") | 119 | pn = d.getVar("PN") |
120 | cve_match = re.compile("CVE:( CVE\-\d{4}\-\d+)+") | 120 | cve_match = re.compile("CVE:( CVE\-\d{4}\-\d+)+") |
121 | |||
122 | # Matches last CVE-1234-211432 in the file name, also if written | ||
123 | # with small letters. Not supporting multiple CVE id's in a single | ||
124 | # file name. | ||
125 | cve_file_name_match = re.compile(".*([Cc][Vv][Ee]\-\d{4}\-\d+)") | ||
126 | |||
121 | patched_cves = set() | 127 | patched_cves = set() |
122 | bb.debug(2, "Looking for patches that solves CVEs for %s" % pn) | 128 | bb.debug(2, "Looking for patches that solves CVEs for %s" % pn) |
123 | for url in src_patches(d): | 129 | for url in src_patches(d): |
124 | patch_file = bb.fetch.decodeurl(url)[2] | 130 | patch_file = bb.fetch.decodeurl(url)[2] |
131 | |||
132 | # Check patch file name for CVE ID | ||
133 | fname_match = cve_file_name_match.search(patch_file) | ||
134 | if fname_match: | ||
135 | cve = fname_match.group(1).upper() | ||
136 | patched_cves.add(cve) | ||
137 | bb.debug(2, "Found CVE %s from patch file name %s" % (cve, patch_file)) | ||
138 | |||
125 | with open(patch_file, "r", encoding="utf-8") as f: | 139 | with open(patch_file, "r", encoding="utf-8") as f: |
126 | try: | 140 | try: |
127 | patch_text = f.read() | 141 | patch_text = f.read() |
@@ -140,7 +154,7 @@ def get_patches_cves(d): | |||
140 | for cve in cves.split(): | 154 | for cve in cves.split(): |
141 | bb.debug(2, "Patch %s solves %s" % (patch_file, cve)) | 155 | bb.debug(2, "Patch %s solves %s" % (patch_file, cve)) |
142 | patched_cves.add(cve) | 156 | patched_cves.add(cve) |
143 | else: | 157 | elif not fname_match: |
144 | bb.debug(2, "Patch %s doesn't solve CVEs" % patch_file) | 158 | bb.debug(2, "Patch %s doesn't solve CVEs" % patch_file) |
145 | 159 | ||
146 | return patched_cves | 160 | return patched_cves |