Blob Blame History Raw
# Expects VULNS_GIT environment variable with a clone of https://git.kernel.org/pub/scm/linux/security/vulns.git
# Expects KSOURCE_GIT environment variable
CVE_TO_BUG=../cve-to-bug.py
ADD_REF=./add-missing-reference

YEAR=2024
# Outer parameter, can be overriden
BRANCH=cve/linux-5.14
branch=$(subst /,_,$(BRANCH))

hash_cve_$(YEAR).dat: $(wildcard $(VULNS_GIT)/cve/published/$(YEAR)/*.sha1)
	for f in $^ ; do \
		echo $$(head -n1 $$f) $$(basename $${f%.sha1}) ; \
	done | sort -k1 >"$@"

cve_bug_$(YEAR).dat: hash_cve_$(YEAR).dat
	for cve in $$(cut -d" " -f2 $<) ; do \
		bug=$$($(CVE_TO_BUG) $$cve) ; \
		sleep 0.3 ; \
		echo $$cve $$bug ; \
	done | sort -k 1b,1 >$@

hash_file_$(branch).dat:
	git --git-dir="$(KSOURCE_GIT)/.git" --work-tree="$(KSOURCE_GIT)" grep -i "^git-commit[[:space:]]*:[[:space:]]*" origin/$(BRANCH) -- "$(KSOURCE_GIT)/patches.suse" |\
		awk -vFS=":" '{gsub(" ", "", $$4); print $$4, $$2}' | sort -k1 >"$@"

hash_cve_bug_$(YEAR).dat: hash_cve_$(YEAR).dat cve_bug_$(YEAR).dat
	sort -k 2b,2 hash_cve_$(YEAR).dat | \
	join -1 2 -2 1 -o 1.1,1.2,2.2 - cve_bug_$(YEAR).dat | \
	sort -k 1 >"$@"

update_refs: update_refs_$(branch)_$(YEAR)

update_refs_$(branch)_$(YEAR): hash_file_$(branch).dat hash_cve_bug_$(YEAR).dat
	set -e; pushd "$(KSOURCE_GIT)" >/dev/null ; \
	git checkout -f -B users/$$USER/$(BRANCH)/cve-refs origin/$(BRANCH) 2>/dev/null ; \
	popd >/dev/null
	set -e ; \
	join hash_file_$(branch).dat hash_cve_bug_$(YEAR).dat | \
	while read sha file cve bug ; do \
		[ -z "$$bug" ] && echo "Unknown bug for $$cve" && continue ; \
		$(ADD_REF) -r $$cve -r "bsc#"$$bug "$(KSOURCE_GIT)/$$file" ; \
	done
	set -e ; pushd "$(KSOURCE_GIT)" >/dev/null ; \
	scripts/log2 --no-edit || true ; \
	popd >/dev/null

clean:
	rm -f *_$(branch).dat
	for y in $$(seq $(FIRST_YEAR) $(YEAR)) ; do \
		rm -f *_$$y.dat ; \
	done