Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: Added CI-PRE-CHECKER for VENDOR_PRODUCT #3840

Open
wants to merge 28 commits into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from 8 commits
Commits
Show all changes
28 commits
Select commit Hold shift + click to select a range
a1e428d
Merge pull request #1 from intel/main
joydeep049 Nov 1, 2023
f0bd35d
Merge pull request #4 from intel/main
joydeep049 Nov 3, 2023
97ec9a5
Merge pull request #5 from intel/main
joydeep049 Nov 9, 2023
829036e
Merge pull request #6 from intel/main
joydeep049 Jan 4, 2024
1d8812e
Merge pull request #11 from intel/main
joydeep049 Feb 18, 2024
50b4fc1
feat: pre_checker initial commit
joydeep049 Feb 19, 2024
81af301
fix: minor filepath change
joydeep049 Feb 19, 2024
6884f0f
fix: Pyupgrade Linter issues
joydeep049 Feb 19, 2024
22910c4
feat: modified yml file and added docs
joydeep049 Mar 3, 2024
91479a6
feat: added docs
joydeep049 Mar 3, 2024
4e5d72f
fix: checkers-action error
joydeep049 Mar 3, 2024
fc83aa6
fix: checker fix
joydeep049 Mar 4, 2024
c9cbe6e
fix: checker fix
joydeep049 Mar 4, 2024
5867336
fix: checker fix
joydeep049 Mar 4, 2024
8dcb522
feat: added test for checker
joydeep049 Mar 4, 2024
1f122bf
fix: docs
joydeep049 Mar 4, 2024
d974753
fix: checker
joydeep049 Mar 4, 2024
02add8a
fix: checker fix
joydeep049 Mar 11, 2024
63f09d6
fix: checkers action
joydeep049 Mar 11, 2024
4eb7629
feat: minor changes
joydeep049 Mar 11, 2024
20bbea3
fix: failing tests
joydeep049 Mar 11, 2024
706196e
fix: failing tests
joydeep049 Mar 11, 2024
5fe48ab
fix: minor changes
joydeep049 Mar 11, 2024
b02df40
fix: added statements to investigate error
joydeep049 Mar 11, 2024
3e286ec
fix: minor changes to investigate errors 2
joydeep049 Mar 11, 2024
7ec0cc3
fix: checker action
joydeep049 Mar 11, 2024
9bf7a8e
feat: minor changes
joydeep049 Mar 11, 2024
426bfe3
fix: action
joydeep049 Mar 11, 2024
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
27 changes: 27 additions & 0 deletions .github/workflows/checkers-action.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
name: checkers-action

on:
push:
paths:
- 'cve_bin_tool/checkers/**'
pull_request:
paths:
- 'cve_bin_tool/checkers/**'

jobs:
run-script:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v3

- name: Get changed files
id: changed-files
uses: jitterbit/get-changed-files@v1

- name: Run Python script
run: |
for file in ${{ steps.changed-files.outputs.added_modified }}; do
python cve_bin_tool/ci_pre_checker.py "$file"
done
shell: bash
50 changes: 50 additions & 0 deletions cve_bin_tool/ci_pre_checker.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
# Copyright (C) 2021 Intel Corporation
# SPDX-License-Identifier: GPL-3.0-or-later
"""Testing script for checker-action.yml"""
import ast
import sqlite3
import sys
from pathlib import Path

OLD_CACHE_DIR = Path("~").expanduser() / ".cache" / "cve-bin-tool" / "cve.db"


def extract_vendor_product(file_path):
"""Extract {vendor,product} pairs from given checker file"""
vendor_product = None
with open(file_path) as file:
inside_vendor_product = False
vendor_product_str = ""
for line in file:
if "VENDOR_PRODUCT" in line:
inside_vendor_product = True
if inside_vendor_product:
vendor_product_str += line.strip()
if line.strip().endswith("]"):
break
if vendor_product_str:
vendor_product = ast.literal_eval(vendor_product_str.split("=")[1].strip())
return vendor_product


def query_database(file_path):
"""Query the database and check whether all the {vendor,product} pairs have associated CVEs"""
vendor_product = extract_vendor_product(file_path)
dbcon = sqlite3.connect(OLD_CACHE_DIR)
cursor = dbcon.cursor()
for vendor, product in vendor_product:
cursor.execute(
"SELECT count(*) FROM cve_range WHERE vendor = ? AND product = ?",
(vendor, product),
)
result = cursor.fetchall()
# Failing Workflow
if result[0] == 0:
sys.exit(1)
# Indicate Success
sys.exit(0)


# Caller Code
file_path = sys.argv[1]
query_database(file_path)
Loading