blob: 28e98b836908f0db0457160d5b88ce7ef8bba2ec [file] [log] [blame]
#!/bin/bash
# SPDX-License-Identifier: GPL-2.0
#
# Copyright 2024 Google LLC
#
# Author: Lee Jones <lee@kernel.org>
#
# Usage
# cve_create_batch filename
#
# * Takes a file containing an upstream SHA in the first column
# - Everything else (including leading whitespace is ignored)
# * Ensures commits are valid upstream commits
# - Skips over invalid entries
# * Calls ${scripts}/cve_create on each valid commit
# set -x # Uncomment to enable debugging
# User variables
MAINLINEREMOTE=mainline
FILE=${1}
if [ ! -s "${FILE}" ]; then
echo "The only argument should be the file to parse"
exit 1
fi
KERNEL_TREE=${CVEKERNELTREE}
if [ ! -d ${KERNEL_TREE} ]; then
echo "CVEKERNELTREE needs setting to the stable repo directory"
echo "Either manually export it or add it to your .bashrc/.zshrc et al."
echo "See HOWTO in the root of this repo"
exit 1
fi
SCRIPTDIR=$(dirname ${0})
while read line; do
# Skip annotations
if echo ${line} | grep -q "^\s*-"; then
continue
fi
SHAS+=($(echo ${line} | grep -oE "^\s*[a-f0-9]{7,}"))
done < ${FILE}
for s in ${SHAS[@]}; do
pushd ${KERNEL_TREE}> /dev/null
# if ! git --no-pager log --oneline -n1 ${s} ${MAINLINEREMOTE}/master 2>&1 | grep -q "^${s} "; then
if ! git --no-pager branch -a ${MAINLINEREMOTE}/master --contains ${s} > /dev/null 2>&1; then
echo "${s} does not appear to be a valid mainline commit - skipping"
popd > /dev/null # ${KERNEL_TREE}
continue
fi
popd > /dev/null # ${KERNEL_TREE}
${SCRIPTDIR}/cve_create ${s}
done