diff --git a/CHANGELOG.md b/CHANGELOG.md index b94a79c..bca35f6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,6 +8,29 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] - Upcoming changes... +## [0.14.0] - 2026-08-11 +### Added +- SQLite support alongside PostgreSQL: set `DB_DRIVER=sqlite` and `DB_DSN` to a database file +- `sql.Scanner` and `driver.Valuer` on `utils.OnlyDate`, so a date reads from a `TEXT` column (SQLite) or a `date` column (PostgreSQL) +- `pkg/models/test_schema.go` holding the production schema the tests build their database from +- `pkg/models/tests/vulns_scenario.sql`, a deterministic fixture whose match criteria cover every version-bound combination +- `pkg/models/pg_parity_test.go`, comparing the rewritten queries against the ones they replace on a real PostgreSQL database. Skipped unless `PG_DSN` is set + +### Changed +- Rewrote both vulnerability queries as portable SQL, valid on PostgreSQL and SQLite +- Moved version range matching out of SQL into `pkg/models/version_range.go`, porting the `natural_sort_order` PostgreSQL function so both engines agree on which vulnerabilities apply to a version +- Test fixtures under `pkg/models/tests/` now carry data only. They used to define their own tables, describing a schema that does not exist, which is what let queries referencing non-existent columns pass CI +- Unified the test driver on `modernc.org/sqlite`, the one the server uses; `mattn/go-sqlite3` is no longer a direct dependency and CGO is not required + +### Fixed +- `GetVulnsByPurlName` joined `cpes.id` and `nvd_match_criteria_ids.cpe_ids`, matching numeric CPE ids against a UUID. It returned no vulnerabilities at all on PostgreSQL and could not run on SQLite +- `GetVulnsByPurlVersion` relied on `array_agg`, the `&&` array overlap operator and the custom `natural_sort_order` function, none available in SQLite +- `saveLicense` inserted `is_sanitized`, which is not a column in the `licenses` table +- `saveVersion` passed four arguments to an insert with two placeholders + +### Deployment +- Requires an `epss_data` table (`cve`, `epss`, `percentile`) plus an index on `cve`. Without it the EPSS lookup fails on every request and every vulnerability is returned with `epss.probability` and `epss.percentile` reading `0`, indistinguishable from a genuine zero + ## [0.13.0] - 2026-06-22 ### Added - `/health` liveness endpoint (GET) on the REST gateway diff --git a/README.md b/README.md index 9ecf2a0..919f04a 100644 --- a/README.md +++ b/README.md @@ -37,13 +37,18 @@ APP_PORT=50052 APP_MODE=dev APP_DEBUG=false -DB_DRIVER=postgres +DB_DRIVER=postgres # postgres or sqlite DB_HOST=localhost DB_USER=scanoss DB_PASSWD= DB_SCHEMA=vulnerabilities DB_SSL_MODE=disable +# To run against SQLite instead, point DB_DSN at the database file. +# The remaining DB_* values are only used to build a DSN when DB_DSN is empty. +# DB_DRIVER=sqlite +# DB_DSN=/path/to/vulnerabilities.db + # Vulnerability data sources OSV_ENABLED=true # Enable/disable OSV (Open Source Vulnerabilities) database OSV_API_BASE_URL=https://api.osv.dev/v1 diff --git a/go.mod b/go.mod index 9253cfe..4872ca5 100644 --- a/go.mod +++ b/go.mod @@ -8,7 +8,6 @@ require ( github.com/grpc-ecosystem/go-grpc-middleware v1.4.0 github.com/jmoiron/sqlx v1.4.0 github.com/lib/pq v1.12.3 - github.com/mattn/go-sqlite3 v1.14.42 github.com/package-url/packageurl-go v0.1.5 github.com/pandatix/go-cvss v0.6.2 github.com/scanoss/go-component-helper v0.6.0 @@ -35,6 +34,7 @@ require ( github.com/google/uuid v1.6.0 // indirect github.com/grpc-ecosystem/grpc-gateway/v2 v2.28.0 // indirect github.com/mattn/go-isatty v0.0.20 // indirect + github.com/mattn/go-sqlite3 v1.14.42 // indirect github.com/ncruces/go-strftime v1.0.0 // indirect github.com/phuslu/iploc v1.0.20230201 // indirect github.com/remyoudompheng/bigfft v0.0.0-20230129092748-24d4a6f8daec // indirect diff --git a/pkg/adapters/vulnerability_support_test.go b/pkg/adapters/vulnerability_support_test.go index 40d6789..eee462f 100644 --- a/pkg/adapters/vulnerability_support_test.go +++ b/pkg/adapters/vulnerability_support_test.go @@ -22,9 +22,9 @@ import ( common "github.com/scanoss/papi/api/commonv2" - _ "github.com/mattn/go-sqlite3" pb "github.com/scanoss/papi/api/vulnerabilitiesv2" zlog "github.com/scanoss/zap-logging-helper/pkg/logger" + _ "modernc.org/sqlite" "scanoss.com/vulnerabilities/pkg/dtos" ) diff --git a/pkg/models/common.go b/pkg/models/common.go index 345d6d4..c63cf21 100644 --- a/pkg/models/common.go +++ b/pkg/models/common.go @@ -22,6 +22,7 @@ import ( "context" "fmt" "os" + "strings" "github.com/jmoiron/sqlx" zlog "github.com/scanoss/zap-logging-helper/pkg/logger" @@ -34,34 +35,70 @@ func loadSQLData(db *sqlx.DB, ctx context.Context, conn *sqlx.Conn, filename str if err != nil { return err } + return execSQL(db, ctx, conn, string(file)) +} + +// execSQL runs the given SQL against either the supplied connection or the DB pool. +func execSQL(db *sqlx.DB, ctx context.Context, conn *sqlx.Conn, sql string) error { + var err error if conn != nil { - _, err = conn.ExecContext(ctx, string(file)) + _, err = conn.ExecContext(ctx, sql) } else { - _, err = db.Exec(string(file)) + _, err = db.Exec(sql) } - if err != nil { - return err + return err +} + +// idempotentDDL rewrites CREATE TABLE/INDEX into their IF NOT EXISTS form so a test +// can load the schema more than once. testSchemaDDL transcribes production and must not +// carry test-only clauses, so the rewrite happens here instead of in the constant. +func idempotentDDL(sql string) string { + for _, kind := range []string{"TABLE", "INDEX"} { + bare := "CREATE " + kind + " " + guarded := bare + "IF NOT EXISTS " + // Normalise first, so an already-guarded statement is not double-guarded. + sql = strings.ReplaceAll(sql, guarded, bare) + sql = strings.ReplaceAll(sql, bare, guarded) + } + return sql +} + +// testDataFiles are the data fixtures loaded on top of the schema. They carry data +// only; the tables come from testSchemaDDL in test_schema.go. Paths are relative to a +// package directory under pkg/. +var testDataFiles = []string{ + "../models/tests/cpe.sql", + "../models/tests/cve.sql", + "../models/tests/purl.sql", + "../models/tests/short_cpe_purl.sql", + "../models/tests/short_cpe.sql", + "../models/tests/versions.sql", + "../models/tests/ndv_match_criteria_ids.sql", + "../models/tests/all_urls.sql", + "../models/tests/mines.sql", + "../models/tests/licenses.sql", + "../models/tests/golang_projects.sql", + "../models/tests/projects.sql", + "../models/tests/epss.sql", + "../models/tests/vulns_scenario.sql", +} + +// LoadTestSchema creates the production schema in the supplied DB. Call this before +// loading any data fixture, since the fixtures do not define their own tables. +// It is safe to call more than once on the same DB. +func LoadTestSchema(db *sqlx.DB, ctx context.Context, conn *sqlx.Conn) error { + if err := execSQL(db, ctx, conn, idempotentDDL(testSchemaDDL)); err != nil { + return fmt.Errorf("failed to load the test schema: %v", err) } return nil } -// LoadTestSQLData loads all the required test SQL files. +// LoadTestSQLData loads the production schema plus all the test data fixtures. func LoadTestSQLData(db *sqlx.DB, ctx context.Context, conn *sqlx.Conn) error { - files := []string{ - "../models/tests/cpe.sql", - "../models/tests/cpe_cve.sql", - "../models/tests/cve.sql", - "../models/tests/purl.sql", - "../models/tests/short_cpe_purl.sql", - "../models/tests/short_cpe.sql", - "../models/tests/versions.sql", - "../models/tests/ndv_match_criteria_ids.sql", - "../models/tests/all_urls.sql", - "../models/tests/mines.sql", - "../models/tests/licenses.sql", - "../models/tests/golang_projects.sql", + if err := LoadTestSchema(db, ctx, conn); err != nil { + return err } - return loadTestSQLDataFiles(db, ctx, conn, files) + return loadTestSQLDataFiles(db, ctx, conn, testDataFiles) } // loadTestSQLDataFiles loads a list of test SQL files. diff --git a/pkg/models/common_helpers_test.go b/pkg/models/common_helpers_test.go new file mode 100644 index 0000000..04fb6d6 --- /dev/null +++ b/pkg/models/common_helpers_test.go @@ -0,0 +1,37 @@ +// SPDX-License-Identifier: GPL-2.0-or-later +/* + * Copyright (C) 2018-2025 SCANOSS.COM + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +// Helpers shared by the tests in this package. They live in a _test.go file so they do +// not ship in the binary; LoadTestSchema and LoadTestSQLData stay in common.go because +// tests in other packages call them. + +package models + +import ( + "context" + + "github.com/jmoiron/sqlx" +) + +// loadTestSQLDataFilesWithSchema loads the production schema followed by the given data +// fixtures. Use this instead of loadTestSQLDataFiles when a test only needs a subset of +// the fixtures, since the fixtures do not create their own tables. +func loadTestSQLDataFilesWithSchema(db *sqlx.DB, ctx context.Context, conn *sqlx.Conn, files []string) error { + if err := LoadTestSchema(db, ctx, conn); err != nil { + return err + } + return loadTestSQLDataFiles(db, ctx, conn, files) +} diff --git a/pkg/models/common_test.go b/pkg/models/common_test.go index 5ccceb3..a0c4240 100644 --- a/pkg/models/common_test.go +++ b/pkg/models/common_test.go @@ -22,7 +22,7 @@ import ( zlog "github.com/scanoss/zap-logging-helper/pkg/logger" "github.com/jmoiron/sqlx" - _ "github.com/mattn/go-sqlite3" + _ "modernc.org/sqlite" ) func TestDbLoad(t *testing.T) { @@ -32,12 +32,12 @@ func TestDbLoad(t *testing.T) { t.Fatal(err) } - db, err := sqlx.Connect("sqlite3", ":memory:") + db, err := sqlx.Connect("sqlite", ":memory:") if err != nil { t.Fatalf("an error '%s' was not expected when opening a stub database connection", err) } defer CloseDB(db) - err = loadSQLData(db, nil, nil, "./tests/mines.sql") + err = loadTestSQLDataFilesWithSchema(db, nil, nil, []string{"./tests/mines.sql"}) if err != nil { t.Errorf("failed to load SQL test data: %v", err) } diff --git a/pkg/models/cpe_purl_test.go b/pkg/models/cpe_purl_test.go index e35c89e..4e2c0e3 100644 --- a/pkg/models/cpe_purl_test.go +++ b/pkg/models/cpe_purl_test.go @@ -50,7 +50,7 @@ func setupTest(t *testing.T) (*sqlx.Conn, *CpePurlModel) { } defer zlog.SyncZap() - db, err := sqlx.Connect("sqlite3", ":memory:") + db, err := sqlx.Connect("sqlite", ":memory:") if err != nil { t.Fatalf("an error '%s' was not expected when opening a stub database connection", err) } @@ -160,7 +160,7 @@ func TestGetCpesByPurlString(t *testing.T) { t.Fatalf("an error '%s' was not expected when opening a sugared logger", err) } defer zlog.SyncZap() - db, err := sqlx.Connect("sqlite3", ":memory:") + db, err := sqlx.Connect("sqlite", ":memory:") if err != nil { t.Fatalf("an error '%s' was not expected when opening a stub database connection", err) } @@ -235,7 +235,7 @@ func TestGetCpesByPurlStringVersion(t *testing.T) { t.Fatalf("an error '%s' was not expected when opening a sugared logger", err) } defer zlog.SyncZap() - db, err := sqlx.Connect("sqlite3", ":memory:") + db, err := sqlx.Connect("sqlite", ":memory:") if err != nil { t.Fatalf("an error '%s' was not expected when opening a stub database connection", err) } diff --git a/pkg/models/epss_test.go b/pkg/models/epss_test.go index 84bc010..0cb2500 100644 --- a/pkg/models/epss_test.go +++ b/pkg/models/epss_test.go @@ -28,7 +28,7 @@ import ( zlog "github.com/scanoss/zap-logging-helper/pkg/logger" "github.com/jmoiron/sqlx" - _ "github.com/mattn/go-sqlite3" + _ "modernc.org/sqlite" ) func TestGetEPSSByCVEs(t *testing.T) { @@ -41,13 +41,13 @@ func TestGetEPSSByCVEs(t *testing.T) { s := ctxzap.Extract(ctx).Sugar() - db, err := sqlx.Connect("sqlite3", ":memory:") + db, err := sqlx.Connect("sqlite", ":memory:") if err != nil { t.Fatalf("an error '%s' was not expected when opening a stub database connection", err) } defer CloseDB(db) - err = loadSQLData(db, nil, nil, "./tests/epss.sql") + err = loadTestSQLDataFilesWithSchema(db, nil, nil, []string{"./tests/epss.sql"}) if err != nil { t.Fatalf("failed to load SQL test data: %v", err) } @@ -68,6 +68,26 @@ func TestGetEPSSByCVEs(t *testing.T) { if len(results) != 3 { t.Errorf("GetEPSSByCVEs() expected 3 results, got %d", len(results)) } + // The scores must survive the scan, not just the row count. epss_data columns are + // TEXT like the rest of the schema, so this covers the TEXT to float32 conversion. + want := map[string][2]float32{ + "CVE-2017-9302": {0.00143, 0.5124}, + "CVE-2015-0269": {0.00285, 0.6832}, + "CVE-2018-10083": {0.00891, 0.8215}, + } + for _, got := range results { + exp, ok := want[got.Cve] + if !ok { + t.Errorf("GetEPSSByCVEs() returned unexpected CVE %v", got.Cve) + continue + } + if got.Epss != exp[0] { + t.Errorf("GetEPSSByCVEs() %v epss = %v, want %v", got.Cve, got.Epss, exp[0]) + } + if got.Percentile != exp[1] { + t.Errorf("GetEPSSByCVEs() %v percentile = %v, want %v", got.Cve, got.Percentile, exp[1]) + } + } } func TestGetEPSSByCVEsEmpty(t *testing.T) { @@ -79,7 +99,7 @@ func TestGetEPSSByCVEsEmpty(t *testing.T) { defer zlog.SyncZap() s := ctxzap.Extract(ctx).Sugar() - db, err := sqlx.Connect("sqlite3", ":memory:") + db, err := sqlx.Connect("sqlite", ":memory:") if err != nil { t.Fatalf("an error '%s' was not expected when opening a stub database connection", err) } @@ -90,7 +110,7 @@ func TestGetEPSSByCVEsEmpty(t *testing.T) { t.Fatalf("failed to load Config: %v", err) } - err = loadSQLData(db, nil, nil, "./tests/epss.sql") + err = loadTestSQLDataFilesWithSchema(db, nil, nil, []string{"./tests/epss.sql"}) if err != nil { t.Fatalf("failed to load SQL test data: %v", err) } @@ -116,7 +136,7 @@ func TestGetEPSSByCVEsNotFound(t *testing.T) { defer zlog.SyncZap() s := ctxzap.Extract(ctx).Sugar() - db, err := sqlx.Connect("sqlite3", ":memory:") + db, err := sqlx.Connect("sqlite", ":memory:") if err != nil { t.Fatalf("an error '%s' was not expected when opening a stub database connection", err) } @@ -127,7 +147,7 @@ func TestGetEPSSByCVEsNotFound(t *testing.T) { t.Fatalf("failed to load Config: %v", err) } - err = loadSQLData(db, nil, nil, "./tests/epss.sql") + err = loadTestSQLDataFilesWithSchema(db, nil, nil, []string{"./tests/epss.sql"}) if err != nil { t.Fatalf("failed to load SQL test data: %v", err) } @@ -154,7 +174,7 @@ func TestGetEPSSByCVEsSingleCVE(t *testing.T) { defer zlog.SyncZap() s := ctxzap.Extract(ctx).Sugar() - db, err := sqlx.Connect("sqlite3", ":memory:") + db, err := sqlx.Connect("sqlite", ":memory:") if err != nil { t.Fatalf("an error '%s' was not expected when opening a stub database connection", err) } @@ -165,7 +185,7 @@ func TestGetEPSSByCVEsSingleCVE(t *testing.T) { t.Fatalf("failed to load Config: %v", err) } - err = loadSQLData(db, nil, nil, "./tests/epss.sql") + err = loadTestSQLDataFilesWithSchema(db, nil, nil, []string{"./tests/epss.sql"}) if err != nil { t.Fatalf("failed to load SQL test data: %v", err) } diff --git a/pkg/models/licenses.go b/pkg/models/licenses.go index 17d07d7..04ec705 100644 --- a/pkg/models/licenses.go +++ b/pkg/models/licenses.go @@ -61,7 +61,7 @@ func (m *LicenseModel) GetLicenseByID(id int32) (License, error) { } var license License err := m.conn.GetContext(m.ctx, &license, - "SELECT id, license_name, spdx_id, is_spdx FROM licenses"+ + "SELECT COALESCE(id, 0) AS id, license_name, spdx_id, is_spdx FROM licenses"+ " WHERE id = $1", id) if err != nil { @@ -80,7 +80,7 @@ func (m *LicenseModel) GetLicenseByName(name string, create bool) (License, erro var license License m.s.Infof("CONNECTION GetLicenseByName %+v", m.conn) err := m.conn.GetContext(m.ctx, &license, - "SELECT id, license_name, spdx_id, is_spdx FROM licenses"+ + "SELECT COALESCE(id, 0) AS id, license_name, spdx_id, is_spdx FROM licenses"+ " WHERE license_name = $1", name) if create && len(license.LicenseName) == 0 { // No license found and requested to create an entry @@ -101,9 +101,11 @@ func (m *LicenseModel) saveLicense(name string) (License, error) { } m.s.Debugf("Attempting to save '%v' to the licenses table...", name) // TODO should we populate the spdx_id before inserting the license? + // is_sanitized is not a column in the licenses table, and the row goes in without an + // id since the schema generates none. No caller reaches this path today. _, err := m.conn.ExecContext(m.ctx, - "INSERT INTO licenses (license_name, spdx_id, is_spdx, is_sanitized) VALUES($1, $2, $3, $4)", - name, "", false, false, + "INSERT INTO licenses (license_name, spdx_id, is_spdx) VALUES($1, $2, $3)", + name, "", false, ) if err != nil { m.s.Warnf("Failed to insert new license name into licenses table for %v: %v", name, err) diff --git a/pkg/models/licenses_test.go b/pkg/models/licenses_test.go index f70f925..ce06a00 100644 --- a/pkg/models/licenses_test.go +++ b/pkg/models/licenses_test.go @@ -33,7 +33,7 @@ func TestLicensesSearch(t *testing.T) { if err != nil { t.Fatalf("an error '%s' was not expected when opening a sugared logger", err) } - db, err := sqlx.Connect("sqlite3", ":memory:") + db, err := sqlx.Connect("sqlite", ":memory:") if err != nil { t.Fatalf("an error '%s' was not expected when opening a stub database connection", err) } @@ -44,7 +44,7 @@ func TestLicensesSearch(t *testing.T) { t.Fatalf("an error '%s' was not expected when opening a stub database connection", err) } defer CloseConn(conn) - err = loadTestSQLDataFiles(db, ctx, conn, []string{"../models/tests/licenses.sql"}) + err = loadTestSQLDataFilesWithSchema(db, ctx, conn, []string{"../models/tests/licenses.sql"}) if err != nil { t.Fatalf("failed to load SQL test data: %v", err) } @@ -120,7 +120,7 @@ func TestLicensesSearchId(t *testing.T) { if err != nil { t.Fatalf("an error '%s' was not expected when opening a sugared logger", err) } - db, err := sqlx.Connect("sqlite3", ":memory:") + db, err := sqlx.Connect("sqlite", ":memory:") if err != nil { t.Fatalf("an error '%s' was not expected when opening a stub database connection", err) } @@ -131,7 +131,7 @@ func TestLicensesSearchId(t *testing.T) { defer CloseConn(conn) defer CloseDB(db) defer zlog.SyncZap() - err = loadTestSQLDataFiles(db, ctx, conn, []string{"../models/tests/licenses.sql"}) + err = loadTestSQLDataFilesWithSchema(db, ctx, conn, []string{"../models/tests/licenses.sql"}) if err != nil { t.Fatalf("failed to load SQL test data: %v", err) } diff --git a/pkg/models/mines_test.go b/pkg/models/mines_test.go index 45caec3..1b6ce90 100644 --- a/pkg/models/mines_test.go +++ b/pkg/models/mines_test.go @@ -25,7 +25,7 @@ import ( "github.com/jmoiron/sqlx" - _ "github.com/mattn/go-sqlite3" + _ "modernc.org/sqlite" ) const NonexistentPurl = "NONEXISTENT" @@ -37,7 +37,7 @@ func TestMines(t *testing.T) { t.Fatalf("an error '%s' was not expected when opening a sugared logger", err) } defer zlog.SyncZap() - db, err := sqlx.Connect("sqlite3", ":memory:") + db, err := sqlx.Connect("sqlite", ":memory:") if err != nil { t.Fatalf("an error '%s' was not expected when opening a stub database connection", err) } @@ -47,7 +47,7 @@ func TestMines(t *testing.T) { t.Fatalf("an error '%s' was not expected when opening a stub database connection", err) } defer CloseConn(conn) - err = loadTestSQLDataFiles(db, ctx, conn, []string{"../models/tests/mines.sql"}) + err = loadTestSQLDataFilesWithSchema(db, ctx, conn, []string{"../models/tests/mines.sql"}) if err != nil { t.Fatalf("failed to load SQL test data: %v", err) } @@ -97,7 +97,7 @@ func TestMinesBadSql(t *testing.T) { t.Fatalf("an error '%s' was not expected when opening a sugared logger", err) } defer zlog.SyncZap() - db, err := sqlx.Connect("sqlite3", ":memory:") + db, err := sqlx.Connect("sqlite", ":memory:") if err != nil { t.Fatalf("an error '%s' was not expected when opening a stub database connection", err) } @@ -107,7 +107,7 @@ func TestMinesBadSql(t *testing.T) { t.Fatalf("an error '%s' was not expected when opening a stub database connection", err) } defer CloseConn(conn) - err = loadTestSQLDataFiles(db, ctx, conn, []string{"../models/tests/mines.sql"}) + err = loadTestSQLDataFilesWithSchema(db, ctx, conn, []string{"../models/tests/mines.sql"}) if err != nil { t.Fatalf("failed to load SQL test data: %v", err) } diff --git a/pkg/models/pg_parity_test.go b/pkg/models/pg_parity_test.go new file mode 100644 index 0000000..4d46d0d --- /dev/null +++ b/pkg/models/pg_parity_test.go @@ -0,0 +1,190 @@ +// SPDX-License-Identifier: GPL-2.0-or-later +/* + * Copyright (C) 2018-2025 SCANOSS.COM + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +// Parity check between the rewritten queries and the SQL they replaced, run against a +// real PostgreSQL database. Skipped unless PG_DSN is set, so it does not run in CI. +// +// This is the test that justifies the port in version_range.go. Run it after touching +// the queries or the version matching: +// +// PG_DSN='postgres://user:pass@host:5432/db?sslmode=disable' \ +// go test ./pkg/models/ -run TestComparePostgres -v -timeout 900s +// +// Expect lost=0 everywhere. Anything lost means the rewrite reports fewer +// vulnerabilities than production does, which is a regression regardless of whether the +// new answer is arguably more correct. +// +// Last run against the production database: 48 purl/version pairs, lost=0, gained=0. +// The variant without a version gains rows by design - the query it replaces joined +// cpes.id and nvd_match_criteria_ids.cpe_ids in a way that never matched, so it +// returned 0 CVEs for every purl. + +package models + +import ( + "context" + "fmt" + "os" + "sort" + "testing" + + "github.com/jmoiron/sqlx" + _ "github.com/lib/pq" + zlog "github.com/scanoss/zap-logging-helper/pkg/logger" +) + +func TestComparePostgres(t *testing.T) { + dsn := os.Getenv("PG_DSN") + if dsn == "" { + t.Skip("PG_DSN not set") + } + _ = zlog.NewSugaredDevLogger() + defer zlog.SyncZap() + ctx := context.Background() + db, err := sqlx.Connect("postgres", dsn) + if err != nil { + t.Fatalf("connect: %v", err) + } + defer db.Close() + model := NewVulnsForPurlModel(db) + + oldNameQuery := `SELECT DISTINCT c2.cve FROM short_cpe_purl scp + INNER JOIN cpes c ON scp.cpe_id = c.id + INNER JOIN nvd_match_criteria_ids nmci ON trim(CAST(nmci.cpe_ids AS TEXT), '{}') LIKE '%' || scp.cpe_id || '%' + INNER JOIN cves c2 ON trim(CAST(nmci.cpe_ids AS TEXT), '{}') LIKE '%' || nmci.match_criteria_id || '%' + WHERE scp.purl = $1` + + oldVersionQuery := `WITH matching_criteria AS ( + SELECT array_agg(nmci.match_criteria_id) as criteria_ids + FROM short_cpe_purl scp + INNER JOIN short_cpes sc ON sc.id = scp.cpe_id + INNER JOIN nvd_match_criteria_ids nmci ON nmci.short_cpe_id = sc.id + WHERE scp.purl = $1 + AND ( + $2 = nmci.version_start_including + OR $2 = nmci.version_end_including + OR ( + ( + (nmci.version_start_excluding = '' AND nmci.version_start_including = '') + OR (nmci.version_start_excluding != '' AND natural_sort_order($2, 20) > natural_sort_order(nmci.version_start_excluding, 20)) + OR (nmci.version_start_including != '' AND natural_sort_order($2, 20) > natural_sort_order(nmci.version_start_including, 20)) + ) + AND ( + (nmci.version_end_excluding = '' AND nmci.version_end_including = '') + OR (nmci.version_end_excluding != '' AND natural_sort_order($2, 20) < natural_sort_order(nmci.version_end_excluding, 20)) + OR (nmci.version_end_including != '' AND natural_sort_order($2, 20) < natural_sort_order(nmci.version_end_including, 20)) + ) + ) + ) + ) + SELECT DISTINCT c2.cve + FROM cves c2, matching_criteria mc + WHERE c2.match_criteria_ids && mc.criteria_ids` + + set := func(s []string) map[string]bool { + m := map[string]bool{} + for _, v := range s { + m[v] = true + } + return m + } + diff := func(a, b map[string]bool) []string { + var out []string + for k := range a { + if !b[k] { + out = append(out, k) + } + } + sort.Strings(out) + return out + } + + purls := []string{"pkg:apache/ant", "pkg:apache/arrow", "pkg:anuko/time-tracker", "pkg:apache/allura"} + comparisons := 0 + + fmt.Println("\n########## variant WITHOUT version ##########") + for _, purl := range purls { + var oldCves []string + if err := db.SelectContext(ctx, &oldCves, oldNameQuery, purl); err != nil { + t.Errorf("%s: original query failed, parity cannot be checked: %v", purl, err) + continue + } + newVulns, err := model.GetVulnsByPurlName(ctx, purl) + if err != nil { + t.Errorf("%s: GetVulnsByPurlName failed: %v", purl, err) + continue + } + var newCves []string + for _, v := range newVulns { + newCves = append(newCves, v.Cve) + } + o, n := set(oldCves), set(newCves) + lost := diff(o, n) + fmt.Printf(" %-28s old=%-4d new=%-4d lost=%d gained=%d\n", + purl, len(o), len(n), len(lost), len(diff(n, o))) + if len(lost) > 0 { + t.Errorf("%s: rewrite lost %d CVEs the original returned: %v", purl, len(lost), lost) + } + } + + fmt.Println("\n########## variant WITH version ##########") + for _, purl := range purls { + // real versions this component has CPEs for + var versions []string + err := db.SelectContext(ctx, &versions, `SELECT DISTINCT v.version_name + FROM short_cpe_purl scp + JOIN cpes c ON c.short_cpe_id = scp.cpe_id + JOIN versions v ON v.id = c.version_id + WHERE scp.purl = $1 AND v.version_name <> '' ORDER BY v.version_name LIMIT 12`, purl) + if err != nil { + t.Errorf("%s: could not list versions: %v", purl, err) + continue + } + for _, ver := range versions { + var oldCves []string + if err := db.SelectContext(ctx, &oldCves, oldVersionQuery, purl, ver); err != nil { + t.Errorf("%s@%s: original query failed, parity cannot be checked: %v", purl, ver, err) + continue + } + newVulns, err := model.GetVulnsByPurlVersion(ctx, purl, ver) + if err != nil { + t.Errorf("%s@%s: GetVulnsByPurlVersion failed: %v", purl, ver, err) + continue + } + var newCves []string + for _, v := range newVulns { + newCves = append(newCves, v.Cve) + } + o, n := set(oldCves), set(newCves) + lost, gained := diff(o, n), diff(n, o) + flag := " " + if len(lost) > 0 { + flag = "!!" + } + fmt.Printf("%s %-24s %-14s old=%-4d new=%-4d lost=%-3d gained=%-3d\n", + flag, purl, ver, len(o), len(n), len(lost), len(gained)) + if len(lost) > 0 { + t.Errorf("%s@%s: rewrite lost %d CVEs the original returned: %v", + purl, ver, len(lost), lost) + } + comparisons++ + } + } + // A silent pass with nothing compared would look identical to a clean run. + if comparisons == 0 { + t.Errorf("no purl/version pairs were compared; the sample data may have changed") + } +} diff --git a/pkg/models/projects_test.go b/pkg/models/projects_test.go index 403a754..e982eef 100644 --- a/pkg/models/projects_test.go +++ b/pkg/models/projects_test.go @@ -34,7 +34,7 @@ func TestProjectsSearch(t *testing.T) { t.Fatalf("an error '%s' was not expected when opening a sugared logger", err) } defer zlog.SyncZap() - db, err := sqlx.Connect("sqlite3", ":memory:") + db, err := sqlx.Connect("sqlite", ":memory:") if err != nil { t.Fatalf("an error '%s' was not expected when opening a stub database connection", err) } @@ -44,7 +44,7 @@ func TestProjectsSearch(t *testing.T) { t.Fatalf("an error '%s' was not expected when opening a stub database connection", err) } defer CloseConn(conn) - err = loadTestSQLDataFiles(db, ctx, conn, []string{"../models/tests/projects.sql", "../models/tests/mines.sql", "../models/tests/licenses.sql"}) + err = loadTestSQLDataFilesWithSchema(db, ctx, conn, []string{"../models/tests/projects.sql", "../models/tests/mines.sql", "../models/tests/licenses.sql"}) if err != nil { t.Fatalf("failed to load SQL test data: %v", err) } @@ -119,7 +119,7 @@ func TestProjectsSearchBadSql(t *testing.T) { t.Fatalf("an error '%s' was not expected when opening a sugared logger", err) } defer zlog.SyncZap() - db, err := sqlx.Connect("sqlite3", ":memory:") + db, err := sqlx.Connect("sqlite", ":memory:") if err != nil { t.Fatalf("an error '%s' was not expected when opening a stub database connection", err) } diff --git a/pkg/models/test_schema.go b/pkg/models/test_schema.go new file mode 100644 index 0000000..2be8405 --- /dev/null +++ b/pkg/models/test_schema.go @@ -0,0 +1,99 @@ +// SPDX-License-Identifier: GPL-2.0-or-later +/* + * Copyright (C) 2018-2025 SCANOSS.COM + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +// The production schema, used to build the database the tests run against. +// +// Tests deliberately run on this schema rather than on per-fixture CREATE TABLE +// statements. The fixtures used to carry their own, describing tables that do not +// exist - DATETIME dates, an integer[] cpe_ids array, surrogate id columns - and that +// is what let queries referencing non-existent columns pass CI. Fixtures under tests/ +// now carry data only. +// +// Keep this in step with the real database. It is a transcription, so it can drift; +// when a query fails in production but passes here, suspect this file first. Dump the +// live schema with `sqlite3 .schema` to compare. + +package models + +// testSchemaDDL is the schema every DB-backed test is built from. +const testSchemaDDL = ` +CREATE TABLE db_version ( + package_name TEXT NOT NULL, + schema_version TEXT NOT NULL, + created_at TEXT NOT NULL, + db_release TEXT NOT NULL + ); +CREATE TABLE all_urls ( + package_hash TEXT, component TEXT, purl_name TEXT, mine_id TEXT, vendor TEXT, version TEXT, + version_id TEXT, date TEXT, license_id TEXT, is_mined TEXT, indexed_date TEXT, version_status TEXT, + version_status_change_date TEXT, total_files TEXT, indexed_files TEXT, source_files TEXT, + ignored_files TEXT, package_size TEXT +); +CREATE INDEX idx_allurls_name ON all_urls (purl_name, mine_id, license_id, version_id); +CREATE INDEX idx_allurls_comp ON all_urls (component, vendor, mine_id); +CREATE INDEX idx_allurls_phash ON all_urls (purl_name, package_hash, mine_id, version_id); +CREATE TABLE golang_projects (mine_id TEXT, purl_name TEXT, component TEXT, license_id TEXT, version_id TEXT, version_date TEXT, is_indexed TEXT); +CREATE INDEX idx_golang_projects_purl_name_is_indexed_license_id_version_id ON golang_projects (purl_name, is_indexed, license_id, version_id); +CREATE TABLE licenses (id TEXT, license_name TEXT, spdx_id TEXT, is_spdx TEXT); +CREATE INDEX idx_license_id_license_name_spdx_id_is_spdx ON licenses (id, license_name, spdx_id, is_spdx); +CREATE TABLE mines (id TEXT, purl_type TEXT, mine_name TEXT, can_download TEXT, repository_url TEXT); +CREATE INDEX idx_mines_purl_type ON mines (purl_type, id); +CREATE TABLE projects ( + mine_id TEXT, purl_name TEXT, vendor TEXT, component TEXT, versions TEXT, license_id TEXT, + git_license_id TEXT, first_version_date TEXT, git_created_at TEXT, git_forks TEXT, git_stars TEXT, + first_indexed_date TEXT, last_indexed_date TEXT, status TEXT, status_change_date TEXT, + source_mine_id TEXT, source_purl_name TEXT +); +CREATE INDEX idx_projects ON projects (purl_name, mine_id, license_id, git_license_id); +CREATE TABLE versions (id TEXT, version_name TEXT, semver TEXT); +CREATE INDEX idx_versions_version_name_id_semver ON versions (version_name, id, semver); +CREATE INDEX idx_versions_id_version_name_semver ON versions (id, version_name, semver); +CREATE TABLE countries (id TEXT, country_name TEXT); +CREATE INDEX idx_countries_id ON countries (id); +CREATE TABLE vendors (id TEXT, username TEXT, type TEXT, mine_id TEXT); +CREATE INDEX idx_vendors_username_type_mine_id ON vendors (username, type, mine_id); +CREATE TABLE github_contributors (purl_name TEXT, contributor TEXT); +CREATE INDEX idx_github_contributors_purl_name ON github_contributors (purl_name); +CREATE INDEX idx_github_contributors_contributor ON github_contributors (contributor); +CREATE TABLE vendor_locations (vendor_id TEXT, declared_location TEXT, curated_countries_ids TEXT); +CREATE INDEX idx_vendor_locations_vendor_id ON vendor_locations (vendor_id); +CREATE INDEX idx_vendor_locations_declared_location ON vendor_locations (declared_location); +CREATE TABLE cpes (cpe TEXT, version_id TEXT, short_cpe_id TEXT); +CREATE TABLE short_cpe_purl (cpe_id TEXT, purl_id TEXT, purl TEXT); +CREATE INDEX short_cpe_purl_purl ON short_cpe_purl (purl); +CREATE TABLE nvd_match_criteria_ids ( + match_criteria_id TEXT, short_cpe_id TEXT, version_start_including TEXT, + version_start_excluding TEXT, version_end_including TEXT, version_end_excluding TEXT +); +CREATE TABLE short_cpes (id TEXT); +CREATE TABLE cves (cve TEXT, severity TEXT, published TEXT, modified TEXT, summary TEXT, match_criteria_ids TEXT); +CREATE INDEX idx_cves_match_criteria_ids ON cves (match_criteria_ids); +CREATE TABLE purls (purl TEXT, id TEXT); +CREATE INDEX idx_purls_purl ON purls (purl); +CREATE TABLE composer_dependencies (purl_name TEXT, version TEXT, dep_data TEXT); +CREATE INDEX idx_composer_dependencies_purl_name_version ON composer_dependencies (purl_name, version); +CREATE TABLE crates_dependencies (purl_name TEXT, version TEXT, dep_data TEXT); +CREATE INDEX idx_crates_dependencies_purl_name_version ON crates_dependencies (purl_name, version); +CREATE TABLE maven_dependencies (purl_name TEXT, version TEXT, dep_data TEXT); +CREATE INDEX idx_maven_dependencies_purl_name_version ON maven_dependencies (purl_name, version); +CREATE TABLE npmjs_dependencies (purl_name TEXT, version TEXT, dep_data TEXT); +CREATE INDEX idx_npmjs_dependencies_purl_name_version ON npmjs_dependencies (purl_name, version); +CREATE TABLE ruby_dependencies (purl_name TEXT, version TEXT, dep_data TEXT); +CREATE INDEX idx_ruby_dependencies_purl_name_version ON ruby_dependencies (purl_name, version); +CREATE TABLE epss_data (cve TEXT, epss TEXT, percentile TEXT); +CREATE INDEX idx_epss_data_cve ON epss_data (cve); +CREATE INDEX idx_nmci_short_cpe_id ON nvd_match_criteria_ids (short_cpe_id); +` diff --git a/pkg/models/tests/all_urls.sql b/pkg/models/tests/all_urls.sql index 16e72db..b4629c8 100644 --- a/pkg/models/tests/all_urls.sql +++ b/pkg/models/tests/all_urls.sql @@ -1,32 +1,13 @@ -DROP TABLE IF EXISTS all_urls; -CREATE TABLE all_urls -( - package_hash text not null, - vendor text, - component text, - version text, - date text, - url text not null, - url_hash text not null, - mine_id integer, - license text, - version_id integer, - license_id integer, - purl_name text, - primary key (package_hash, url, url_hash) -); - -insert into all_urls (package_hash, vendor, component, version, date, url, url_hash, mine_id, license, purl_name, version_id, license_id) values ('7b1cbed0ad866bd4ece1fc3719fb0c5d', 'goffice', 'goffice', '0.10.52-4', '2022-08-04', 'https://snapshot.debian.org/archive/debian-ports/20220804T151036Z/pool-powerpc/main/g/goffice/libgoffice-0.10-10-dbgsym_0.10.52-4_powerpc.deb', '3a56b97b0b9672a8b2482d028d3ef488', 10, 'GPL-2 or GPL-3', 'debian/goffice', 19836180, 15); - -insert into all_urls (package_hash, vendor, component, version, date, url, url_hash, mine_id, license, purl_name, version_id, license_id) values ('b757a992ada86f72942aa7fc153a992f', 'scanoss', 'dependencies', 'v0.0.1', '2021-12-10', 'https://github.com/scanoss/dependencies/archive/v0.0.1.zip', 'd8fd0cd2822034a356c0e05a1c9c372d', 5, 'MIT', 'scanoss/dependencies',19541010,5614); - -insert into all_urls (package_hash, vendor, component, version, date, url, url_hash, mine_id, license, purl_name, version_id, license_id) values ('4d66775f503b1e76582e7e5b2ea54d92', 'taballa.hp-PD', 'tablestyle', '0.0.10', '2013-08-26', 'https://rubygems.org/downloads/tablestyle-0.0.10.gem', '5a088240b44efa142be4b3c40f8ae9c1', 1, 'MIT', 'tablestyle', 19541011, 5614); -insert into all_urls (package_hash, vendor, component, version, date, url, url_hash, mine_id, license, purl_name, version_id, license_id) values ('bfada11fd2b2b8fa23943b8b6fe5cb3f', 'taballa.hp-PD', 'tablestyle', '0.0.12', '2013-08-26', 'https://rubygems.org/downloads/tablestyle-0.0.12.gem', '686dc352775b58652c9d9ddb2117f402', 1, 'MIT', 'tablestyle', 258510, 5614); -insert into all_urls (package_hash, vendor, component, version, date, url, url_hash, mine_id, license, purl_name, version_id, license_id) values ('f586d603a9cb2460c4517cffad6ad5e4', 'taballa.hp-PD', 'tablestyle', '0.0.7', null, 'https://rubygems.org/downloads/tablestyle-0.0.7.gem', '2a3251711e7010ca15d232ec4ec4fb16', 1, 'MIT', 'tablestyle', 14797, 5614); -insert into all_urls (package_hash, vendor, component, version, date, url, url_hash, mine_id, license, purl_name, version_id, license_id) values ('b1cd1444c2f76e7564f57b0e047994a4', 'taballa.hp-PD', 'tablestyle', '0.0.4', '2013-07-08', 'https://rubygems.org/downloads/tablestyle-0.0.4.gem', 'b494b3e367d26b6ab2785ad3aee8afb7', 1, 'MIT', 'tablestyle', 252547, 5614); -insert into all_urls (package_hash, vendor, component, version, date, url, url_hash, mine_id, license, purl_name, version_id, license_id) values ('952edab5837f5f0e59638dd791187725', 'taballa.hp-PD', 'tablestyle', '0.0.11', '2013-08-26', 'https://rubygems.org/downloads/tablestyle-0.0.11.gem', '59fc4cf45a7d1425303a5bb897a463f4', 1, 'MIT', 'tablestyle', 11435747, 5614); -insert into all_urls (package_hash, vendor, component, version, date, url, url_hash, mine_id, license, purl_name, version_id, license_id) values ('85ace696e6aec401c611eac8da439d75', 'taballa.hp-PD', 'tablestyle', '0.0.5', '2013-07-08', 'https://rubygems.org/downloads/tablestyle-0.0.5.gem', '2e60ef936150975ca2071cc8782c062a', 1, 'MIT', 'tablestyle', 14796, 5614); -insert into all_urls (package_hash, vendor, component, version, date, url, url_hash, mine_id, license, purl_name, version_id, license_id) values ('4986c6fed8d0b30daa9caaa0e94101ff', 'taballa.hp-PD', 'tablestyle', '0.0.9', '2013-08-26', 'https://rubygems.org/downloads/tablestyle-0.0.9.gem', 'bd2af9a9445fdd5bfe1ab28dd26f9c42', 1, 'MIT', 'tablestyle', 14302, 5614); -insert into all_urls (package_hash, vendor, component, version, date, url, url_hash, mine_id, license, purl_name, version_id, license_id) values ('33523708f7fbef1c554d340a5cfd42aa', 'taballa.hp-PD', 'tablestyle', '0.0.8', '2013-08-26', 'https://rubygems.org/downloads/tablestyle-0.0.8.gem', '5e2c89ddef74a0873169f2e13f5efba6', 1, 'MIT', 'tablestyle', 264714, 9999); -insert into all_urls (package_hash, vendor, component, version, date, url, url_hash, mine_id, license, purl_name, version_id, license_id) values ('7282b2348ff82296a9f84d399fd2799d', 'taballa.hp-PD', 'tablestyle', '0.0.1', '2013-07-05', 'https://rubygems.org/downloads/tablestyle-0.0.1.gem', 'ce63a5ed13cc0446f4b61cb779c9d4e0', 1, 'MIT', 'tablestyle', 19541010, 9999); -insert into all_urls (package_hash, vendor, component, version, date, url, url_hash, mine_id, license, purl_name, version_id, license_id) values ('abc123def456ghi789jkl012mno345pq', 'tseliot', 'screen-resolution-extra', '15.0.0', '2023-01-01', 'https://github.com/tseliot/screen-resolution-extra/archive/15.0.0.tar.gz', 'def456ghi789jkl012mno345pqr678st', 5, 'MIT', 'tseliot/screen-resolution-extra', 30001, 5614); +-- Test data only. The schema comes from testSchemaDDL in pkg/models/test_schema.go; do not add DDL here. +INSERT INTO all_urls (package_hash, vendor, component, version, date, mine_id, purl_name, version_id, license_id) VALUES ('7b1cbed0ad866bd4ece1fc3719fb0c5d', 'goffice', 'goffice', '0.10.52-4', '2022-08-04', 10, 'debian/goffice', 19836180, 15); +INSERT INTO all_urls (package_hash, vendor, component, version, date, mine_id, purl_name, version_id, license_id) VALUES ('b757a992ada86f72942aa7fc153a992f', 'scanoss', 'dependencies', 'v0.0.1', '2021-12-10', 5, 'scanoss/dependencies', 19541010, 5614); +INSERT INTO all_urls (package_hash, vendor, component, version, date, mine_id, purl_name, version_id, license_id) VALUES ('4d66775f503b1e76582e7e5b2ea54d92', 'taballa.hp-PD', 'tablestyle', '0.0.10', '2013-08-26', 1, 'tablestyle', 19541011, 5614); +INSERT INTO all_urls (package_hash, vendor, component, version, date, mine_id, purl_name, version_id, license_id) VALUES ('bfada11fd2b2b8fa23943b8b6fe5cb3f', 'taballa.hp-PD', 'tablestyle', '0.0.12', '2013-08-26', 1, 'tablestyle', 258510, 5614); +INSERT INTO all_urls (package_hash, vendor, component, version, date, mine_id, purl_name, version_id, license_id) VALUES ('f586d603a9cb2460c4517cffad6ad5e4', 'taballa.hp-PD', 'tablestyle', '0.0.7', null, 1, 'tablestyle', 14797, 5614); +INSERT INTO all_urls (package_hash, vendor, component, version, date, mine_id, purl_name, version_id, license_id) VALUES ('b1cd1444c2f76e7564f57b0e047994a4', 'taballa.hp-PD', 'tablestyle', '0.0.4', '2013-07-08', 1, 'tablestyle', 252547, 5614); +INSERT INTO all_urls (package_hash, vendor, component, version, date, mine_id, purl_name, version_id, license_id) VALUES ('952edab5837f5f0e59638dd791187725', 'taballa.hp-PD', 'tablestyle', '0.0.11', '2013-08-26', 1, 'tablestyle', 11435747, 5614); +INSERT INTO all_urls (package_hash, vendor, component, version, date, mine_id, purl_name, version_id, license_id) VALUES ('85ace696e6aec401c611eac8da439d75', 'taballa.hp-PD', 'tablestyle', '0.0.5', '2013-07-08', 1, 'tablestyle', 14796, 5614); +INSERT INTO all_urls (package_hash, vendor, component, version, date, mine_id, purl_name, version_id, license_id) VALUES ('4986c6fed8d0b30daa9caaa0e94101ff', 'taballa.hp-PD', 'tablestyle', '0.0.9', '2013-08-26', 1, 'tablestyle', 14302, 5614); +INSERT INTO all_urls (package_hash, vendor, component, version, date, mine_id, purl_name, version_id, license_id) VALUES ('33523708f7fbef1c554d340a5cfd42aa', 'taballa.hp-PD', 'tablestyle', '0.0.8', '2013-08-26', 1, 'tablestyle', 264714, 9999); +INSERT INTO all_urls (package_hash, vendor, component, version, date, mine_id, purl_name, version_id, license_id) VALUES ('7282b2348ff82296a9f84d399fd2799d', 'taballa.hp-PD', 'tablestyle', '0.0.1', '2013-07-05', 1, 'tablestyle', 19541010, 9999); +INSERT INTO all_urls (package_hash, vendor, component, version, date, mine_id, purl_name, version_id, license_id) VALUES ('abc123def456ghi789jkl012mno345pq', 'tseliot', 'screen-resolution-extra', '15.0.0', '2023-01-01', 5, 'tseliot/screen-resolution-extra', 30001, 5614); diff --git a/pkg/models/tests/bad_sql.sql b/pkg/models/tests/bad_sql.sql index 8bf8a8f..5872eb1 100644 --- a/pkg/models/tests/bad_sql.sql +++ b/pkg/models/tests/bad_sql.sql @@ -1,3 +1,3 @@ --- noinspection SyntaxErrorForFile +-- Test data only. The schema comes from testSchemaDDL in pkg/models/test_schema.go; do not add DDL here. CREATE TABLE failed; \ No newline at end of file diff --git a/pkg/models/tests/cpe.sql b/pkg/models/tests/cpe.sql index 1391047..cd47e6f 100644 --- a/pkg/models/tests/cpe.sql +++ b/pkg/models/tests/cpe.sql @@ -1,391 +1,382 @@ -DROP TABLE IF EXISTS cpes; -CREATE TABLE "cpes" ( - "id" INTEGER NOT NULL UNIQUE, - "cpe" TEXT NOT NULL UNIQUE, - "short_cpe_id" INTEGER NOT NULL, - "version_id" INTEGER, - PRIMARY KEY("id") -); - - -INSERT INTO "cpes" ("id", "cpe", "short_cpe_id", "version_id") VALUES (158765, 'cpe:2.3:a:calderalabs:caldera_forms:1.5.2:*:*:*:*:wordpress:*:*', 40143, 13284); -INSERT INTO "cpes" ("id", "cpe", "short_cpe_id", "version_id") VALUES (158696, 'cpe:2.3:a:calderalabs:caldera_forms:1.0.6:*:*:*:*:wordpress:*:*', 40143, 263168); -INSERT INTO "cpes" ("id", "cpe", "short_cpe_id", "version_id") VALUES (160884, 'cpe:2.3:a:cantemo:portal:3.4.5:*:*:*:*:*:*:*', 6591, 5811416); -INSERT INTO "cpes" ("id", "cpe", "short_cpe_id", "version_id") VALUES (158721, 'cpe:2.3:a:calderalabs:caldera_forms:1.1.9:*:*:*:*:wordpress:*:*', 40143, 19500087); -INSERT INTO "cpes" ("id", "cpe", "short_cpe_id", "version_id") VALUES (158716, 'cpe:2.3:a:calderalabs:caldera_forms:1.1.9.5:*:*:*:*:wordpress:*:*', 40143, 13093993); -INSERT INTO "cpes" ("id", "cpe", "short_cpe_id", "version_id") VALUES (158760, 'cpe:2.3:a:calderalabs:caldera_forms:1.5.0.8:*:*:*:*:wordpress:*:*', 40143, 13819035); -INSERT INTO "cpes" ("id", "cpe", "short_cpe_id", "version_id") VALUES (160202, 'cpe:2.3:a:canonical:metal_as_a_service:1.9.3:*:*:*:*:*:*:*', 54486, 19501262); -INSERT INTO "cpes" ("id", "cpe", "short_cpe_id", "version_id") VALUES (159782, 'cpe:2.3:a:candlepinproject:candlepin:0.7.2:*:*:*:*:*:*:*', 23153, 14948); -INSERT INTO "cpes" ("id", "cpe", "short_cpe_id", "version_id") VALUES (158740, 'cpe:2.3:a:calderalabs:caldera_forms:1.3.5:*:*:*:*:wordpress:*:*', 40143, 13146); -INSERT INTO "cpes" ("id", "cpe", "short_cpe_id", "version_id") VALUES (160814, 'cpe:2.3:a:cantemo:portal:2.3.4:*:*:*:*:*:*:*', 6591, 252221); -INSERT INTO "cpes" ("id", "cpe", "short_cpe_id", "version_id") VALUES (157224, 'cpe:2.3:a:cached_project:cached:0.2.0:*:*:*:*:rust:*:*', 54546, 265155); -INSERT INTO "cpes" ("id", "cpe", "short_cpe_id", "version_id") VALUES (160847, 'cpe:2.3:a:cantemo:portal:3.1.1:*:*:*:*:*:*:*', 6591, 253031); -INSERT INTO "cpes" ("id", "cpe", "short_cpe_id", "version_id") VALUES (157243, 'cpe:2.3:a:cached_project:cached:0.6.2:*:*:*:*:rust:*:*', 54546, 19491698); -INSERT INTO "cpes" ("id", "cpe", "short_cpe_id", "version_id") VALUES (160832, 'cpe:2.3:a:cantemo:portal:3.0.1:*:*:*:*:*:*:*', 6591, 263095); -INSERT INTO "cpes" ("id", "cpe", "short_cpe_id", "version_id") VALUES (159554, 'cpe:2.3:a:call_project:call:3.0.1:*:*:*:*:node.js:*:*', 50021, 263095); -INSERT INTO "cpes" ("id", "cpe", "short_cpe_id", "version_id") VALUES (159774, 'cpe:2.3:a:candidate-application-form_project:candidate-application-form:1.2:*:*:*:*:wordpress:*:*', 8270, 264642); -INSERT INTO "cpes" ("id", "cpe", "short_cpe_id", "version_id") VALUES (159581, 'cpe:2.3:a:cambridge_enterprise:jbig-kit:1.2:*:*:*:*:*:*:*', 32816, 264642); -INSERT INTO "cpes" ("id", "cpe", "short_cpe_id", "version_id") VALUES (158727, 'cpe:2.3:a:calderalabs:caldera_forms:1.3.0.2:*:*:*:*:wordpress:*:*', 40143, 19462820); -INSERT INTO "cpes" ("id", "cpe", "short_cpe_id", "version_id") VALUES (160828, 'cpe:2.3:a:cantemo:portal:2.4.7:*:*:*:*:*:*:*', 6591, 8917); -INSERT INTO "cpes" ("id", "cpe", "short_cpe_id", "version_id") VALUES (160834, 'cpe:2.3:a:cantemo:portal:3.0.11:*:*:*:*:*:*:*', 6591, 13949); -INSERT INTO "cpes" ("id", "cpe", "short_cpe_id", "version_id") VALUES (160792, 'cpe:2.3:a:cantemo:portal:2.0.6:*:*:*:*:*:*:*', 6591, 19491044); -INSERT INTO "cpes" ("id", "cpe", "short_cpe_id", "version_id") VALUES (160868, 'cpe:2.3:a:cantemo:portal:3.2.8:*:*:*:*:*:*:*', 6591, 19468446); -INSERT INTO "cpes" ("id", "cpe", "short_cpe_id", "version_id") VALUES (160798, 'cpe:2.3:a:cantemo:portal:2.1.4:*:*:*:*:*:*:*', 6591, 13571); -INSERT INTO "cpes" ("id", "cpe", "short_cpe_id", "version_id") VALUES (158771, 'cpe:2.3:a:calderalabs:caldera_forms:1.5.6.2:*:*:*:*:wordpress:*:*', 40143, 14251660); -INSERT INTO "cpes" ("id", "cpe", "short_cpe_id", "version_id") VALUES (158703, 'cpe:2.3:a:calderalabs:caldera_forms:1.1.1:*:*:*:*:wordpress:*:*', 40143, 264337); -INSERT INTO "cpes" ("id", "cpe", "short_cpe_id", "version_id") VALUES (158729, 'cpe:2.3:a:calderalabs:caldera_forms:1.3.1.2:*:*:*:*:wordpress:*:*', 40143, 6703009); -INSERT INTO "cpes" ("id", "cpe", "short_cpe_id", "version_id") VALUES (158698, 'cpe:2.3:a:calderalabs:caldera_forms:1.0.8:*:*:*:*:wordpress:*:*', 40143, 251751); -INSERT INTO "cpes" ("id", "cpe", "short_cpe_id", "version_id") VALUES (160882, 'cpe:2.3:a:cantemo:portal:3.4.3:*:*:*:*:*:*:*', 6591, 19533308); -INSERT INTO "cpes" ("id", "cpe", "short_cpe_id", "version_id") VALUES (157081, 'cpe:2.3:a:c2fo:comb:0.2.7:*:*:*:*:node.js:*:*', 4772, 19487480); -INSERT INTO "cpes" ("id", "cpe", "short_cpe_id", "version_id") VALUES (160203, 'cpe:2.3:a:canonical:metal_as_a_service:1.9.4:*:*:*:*:*:*:*', 54486, 254033); -INSERT INTO "cpes" ("id", "cpe", "short_cpe_id", "version_id") VALUES (159562, 'cpe:2.3:a:call_project:call:5.0.1:*:*:*:*:node.js:*:*', 50021, 1794); -INSERT INTO "cpes" ("id", "cpe", "short_cpe_id", "version_id") VALUES (160861, 'cpe:2.3:a:cantemo:portal:3.2.13:*:*:*:*:*:*:*', 6591, 14250461); -INSERT INTO "cpes" ("id", "cpe", "short_cpe_id", "version_id") VALUES (157053, 'cpe:2.3:a:c2fo:comb:0.0.2:*:*:*:*:node.js:*:*', 4772, 264721); -INSERT INTO "cpes" ("id", "cpe", "short_cpe_id", "version_id") VALUES (157094, 'cpe:2.3:a:c2fo:comb:1.0.1:*:*:*:*:node.js:*:*', 4772, 265154); -INSERT INTO "cpes" ("id", "cpe", "short_cpe_id", "version_id") VALUES (157206, 'cpe:2.3:a:cached-path-relative_project:cached-path-relative:1.0.1:*:*:*:*:node.js:*:*', 6930, 265154); -INSERT INTO "cpes" ("id", "cpe", "short_cpe_id", "version_id") VALUES (160877, 'cpe:2.3:a:cantemo:portal:3.3.7:*:*:*:*:*:*:*', 6591, 6544148); -INSERT INTO "cpes" ("id", "cpe", "short_cpe_id", "version_id") VALUES (157089, 'cpe:2.3:a:c2fo:comb:0.3.5:*:*:*:*:node.js:*:*', 4772, 6155011); -INSERT INTO "cpes" ("id", "cpe", "short_cpe_id", "version_id") VALUES (160860, 'cpe:2.3:a:cantemo:portal:3.2.12:*:*:*:*:*:*:*', 6591, 19480103); -INSERT INTO "cpes" ("id", "cpe", "short_cpe_id", "version_id") VALUES (159549, 'cpe:2.3:a:call_project:call:1.0.0:*:*:*:*:node.js:*:*', 50021, 265153); -INSERT INTO "cpes" ("id", "cpe", "short_cpe_id", "version_id") VALUES (157093, 'cpe:2.3:a:c2fo:comb:1.0.0:*:*:*:*:node.js:*:*', 4772, 265153); -INSERT INTO "cpes" ("id", "cpe", "short_cpe_id", "version_id") VALUES (160826, 'cpe:2.3:a:cantemo:portal:2.4.5:*:*:*:*:*:*:*', 6591, 15145); -INSERT INTO "cpes" ("id", "cpe", "short_cpe_id", "version_id") VALUES (157205, 'cpe:2.3:a:cached-path-relative_project:cached-path-relative:1.0.0:*:*:*:*:node.js:*:*', 6930, 265153); -INSERT INTO "cpes" ("id", "cpe", "short_cpe_id", "version_id") VALUES (160812, 'cpe:2.3:a:cantemo:portal:2.3.2:*:*:*:*:*:*:*', 6591, 244660); -INSERT INTO "cpes" ("id", "cpe", "short_cpe_id", "version_id") VALUES (159584, 'cpe:2.3:a:cambridge_enterprise:jbig-kit:1.5:*:*:*:*:*:*:*', 32816, 13616284); -INSERT INTO "cpes" ("id", "cpe", "short_cpe_id", "version_id") VALUES (159777, 'cpe:2.3:a:candlepinproject:candlepin:0.4.11:*:*:*:*:*:*:*', 23153, 19485263); -INSERT INTO "cpes" ("id", "cpe", "short_cpe_id", "version_id") VALUES (158739, 'cpe:2.3:a:calderalabs:caldera_forms:1.3.5.3:*:*:*:*:wordpress:*:*', 40143, 10499956); -INSERT INTO "cpes" ("id", "cpe", "short_cpe_id", "version_id") VALUES (160872, 'cpe:2.3:a:cantemo:portal:3.3.2:*:*:*:*:*:*:*', 6591, 19525948); -INSERT INTO "cpes" ("id", "cpe", "short_cpe_id", "version_id") VALUES (158701, 'cpe:2.3:a:calderalabs:caldera_forms:1.1.0:*:*:*:*:wordpress:*:*', 40143, 264339); -INSERT INTO "cpes" ("id", "cpe", "short_cpe_id", "version_id") VALUES (160816, 'cpe:2.3:a:cantemo:portal:2.3.6:*:*:*:*:*:*:*', 6591, 8878); -INSERT INTO "cpes" ("id", "cpe", "short_cpe_id", "version_id") VALUES (160791, 'cpe:2.3:a:cantemo:portal:2.0.5:*:*:*:*:*:*:*', 6591, 262138); -INSERT INTO "cpes" ("id", "cpe", "short_cpe_id", "version_id") VALUES (158714, 'cpe:2.3:a:calderalabs:caldera_forms:1.1.9.3:*:*:*:*:wordpress:*:*', 40143, 13877853); -INSERT INTO "cpes" ("id", "cpe", "short_cpe_id", "version_id") VALUES (158693, 'cpe:2.3:a:calderalabs:caldera_forms:1.0.3:*:*:*:*:wordpress:*:*', 40143, 265149); -INSERT INTO "cpes" ("id", "cpe", "short_cpe_id", "version_id") VALUES (158713, 'cpe:2.3:a:calderalabs:caldera_forms:1.1.9.2:*:*:*:*:wordpress:*:*', 40143, 13934859); -INSERT INTO "cpes" ("id", "cpe", "short_cpe_id", "version_id") VALUES (157236, 'cpe:2.3:a:cached_project:cached:0.4.1:*:*:*:*:rust:*:*', 54546, 262603); -INSERT INTO "cpes" ("id", "cpe", "short_cpe_id", "version_id") VALUES (157092, 'cpe:2.3:a:c2fo:comb:0.4.1:*:*:*:*:node.js:*:*', 4772, 262603); -INSERT INTO "cpes" ("id", "cpe", "short_cpe_id", "version_id") VALUES (157237, 'cpe:2.3:a:cached_project:cached:0.4.2:*:*:*:*:rust:*:*', 54546, 247658); -INSERT INTO "cpes" ("id", "cpe", "short_cpe_id", "version_id") VALUES (157228, 'cpe:2.3:a:cached_project:cached:0.22.0:*:*:*:*:rust:*:*', 54546, 5127876); -INSERT INTO "cpes" ("id", "cpe", "short_cpe_id", "version_id") VALUES (157070, 'cpe:2.3:a:c2fo:comb:0.1.8:*:*:*:*:node.js:*:*', 4772, 15211); -INSERT INTO "cpes" ("id", "cpe", "short_cpe_id", "version_id") VALUES (160851, 'cpe:2.3:a:cantemo:portal:3.1.5:*:*:*:*:*:*:*', 6591, 9154); -INSERT INTO "cpes" ("id", "cpe", "short_cpe_id", "version_id") VALUES (160204, 'cpe:2.3:a:canonical:metal_as_a_service:1.9.5:*:*:*:*:*:*:*', 54486, 19299214); -INSERT INTO "cpes" ("id", "cpe", "short_cpe_id", "version_id") VALUES (159587, 'cpe:2.3:a:cambridge_enterprise:jbig-kit:2.1:*:*:*:*:*:*:*', 32816, 12690234); -INSERT INTO "cpes" ("id", "cpe", "short_cpe_id", "version_id") VALUES (158757, 'cpe:2.3:a:calderalabs:caldera_forms:1.5.0.5:*:*:*:*:wordpress:*:*', 40143, 1999301); -INSERT INTO "cpes" ("id", "cpe", "short_cpe_id", "version_id") VALUES (158746, 'cpe:2.3:a:calderalabs:caldera_forms:1.4.4.1:*:*:*:*:wordpress:*:*', 40143, 19478045); -INSERT INTO "cpes" ("id", "cpe", "short_cpe_id", "version_id") VALUES (160823, 'cpe:2.3:a:cantemo:portal:2.4.2:*:*:*:*:*:*:*', 6591, 251178); -INSERT INTO "cpes" ("id", "cpe", "short_cpe_id", "version_id") VALUES (160793, 'cpe:2.3:a:cantemo:portal:2.0.7:*:*:*:*:*:*:*', 6591, 257434); -INSERT INTO "cpes" ("id", "cpe", "short_cpe_id", "version_id") VALUES (160801, 'cpe:2.3:a:cantemo:portal:2.2.0:*:*:*:*:*:*:*', 6591, 251179); -INSERT INTO "cpes" ("id", "cpe", "short_cpe_id", "version_id") VALUES (160862, 'cpe:2.3:a:cantemo:portal:3.2.2:*:*:*:*:*:*:*', 6591, 14619); -INSERT INTO "cpes" ("id", "cpe", "short_cpe_id", "version_id") VALUES (159780, 'cpe:2.3:a:candlepinproject:candlepin:0.5.5:*:*:*:*:*:*:*', 23153, 19487460); -INSERT INTO "cpes" ("id", "cpe", "short_cpe_id", "version_id") VALUES (160835, 'cpe:2.3:a:cantemo:portal:3.0.12:*:*:*:*:*:*:*', 6591, 13961); -INSERT INTO "cpes" ("id", "cpe", "short_cpe_id", "version_id") VALUES (157057, 'cpe:2.3:a:c2fo:comb:0.0.6:*:*:*:*:node.js:*:*', 4772, 263449); -INSERT INTO "cpes" ("id", "cpe", "short_cpe_id", "version_id") VALUES (157067, 'cpe:2.3:a:c2fo:comb:0.1.5:*:*:*:*:node.js:*:*', 4772, 252546); -INSERT INTO "cpes" ("id", "cpe", "short_cpe_id", "version_id") VALUES (160587, 'cpe:2.3:a:canonical:ubuntu-core-launcher:1.0.27:*:*:*:*:*:*:*', 4970, 19475780); -INSERT INTO "cpes" ("id", "cpe", "short_cpe_id", "version_id") VALUES (160803, 'cpe:2.3:a:cantemo:portal:2.2.2:*:*:*:*:*:*:*', 6591, 252703); -INSERT INTO "cpes" ("id", "cpe", "short_cpe_id", "version_id") VALUES (158707, 'cpe:2.3:a:calderalabs:caldera_forms:1.1.5:*:*:*:*:wordpress:*:*', 40143, 14540); -INSERT INTO "cpes" ("id", "cpe", "short_cpe_id", "version_id") VALUES (160597, 'cpe:2.3:a:canonical:update-manager:1\:0.142.23.1:*:*:*:*:*:*:*', 11798, null); -INSERT INTO "cpes" ("id", "cpe", "short_cpe_id", "version_id") VALUES (160598, 'cpe:2.3:a:canonical:update-manager:1\:0.150:*:*:*:*:*:*:*', 11798, null); -INSERT INTO "cpes" ("id", "cpe", "short_cpe_id", "version_id") VALUES (157066, 'cpe:2.3:a:c2fo:comb:0.1.4:*:*:*:*:node.js:*:*', 4772, 15000); -INSERT INTO "cpes" ("id", "cpe", "short_cpe_id", "version_id") VALUES (160858, 'cpe:2.3:a:cantemo:portal:3.2.10:*:*:*:*:*:*:*', 6591, 19480292); -INSERT INTO "cpes" ("id", "cpe", "short_cpe_id", "version_id") VALUES (158747, 'cpe:2.3:a:calderalabs:caldera_forms:1.4.4:*:*:*:*:wordpress:*:*', 40143, 13279); -INSERT INTO "cpes" ("id", "cpe", "short_cpe_id", "version_id") VALUES (157062, 'cpe:2.3:a:c2fo:comb:0.1.10:*:*:*:*:node.js:*:*', 4772, 19487577); -INSERT INTO "cpes" ("id", "cpe", "short_cpe_id", "version_id") VALUES (160796, 'cpe:2.3:a:cantemo:portal:2.1.2:*:*:*:*:*:*:*', 6591, 263539); -INSERT INTO "cpes" ("id", "cpe", "short_cpe_id", "version_id") VALUES (158712, 'cpe:2.3:a:calderalabs:caldera_forms:1.1.9.1:*:*:*:*:wordpress:*:*', 40143, 19487278); -INSERT INTO "cpes" ("id", "cpe", "short_cpe_id", "version_id") VALUES (160794, 'cpe:2.3:a:cantemo:portal:2.1.0:*:*:*:*:*:*:*', 6591, 264251); -INSERT INTO "cpes" ("id", "cpe", "short_cpe_id", "version_id") VALUES (158763, 'cpe:2.3:a:calderalabs:caldera_forms:1.5.1:*:*:*:*:wordpress:*:*', 40143, 15231); -INSERT INTO "cpes" ("id", "cpe", "short_cpe_id", "version_id") VALUES (160772, 'cpe:2.3:a:cantemo:portal:1.5.1:*:*:*:*:*:*:*', 6591, 15231); -INSERT INTO "cpes" ("id", "cpe", "short_cpe_id", "version_id") VALUES (157059, 'cpe:2.3:a:c2fo:comb:0.0.8:*:*:*:*:node.js:*:*', 4772, 264714); -INSERT INTO "cpes" ("id", "cpe", "short_cpe_id", "version_id") VALUES (160850, 'cpe:2.3:a:cantemo:portal:3.1.4:*:*:*:*:*:*:*', 6591, 8723); -INSERT INTO "cpes" ("id", "cpe", "short_cpe_id", "version_id") VALUES (157074, 'cpe:2.3:a:c2fo:comb:0.2.11:*:*:*:*:node.js:*:*', 4772, 5482104); -INSERT INTO "cpes" ("id", "cpe", "short_cpe_id", "version_id") VALUES (157247, 'cpe:2.3:a:cached_project:cached:0.9.0:*:*:*:*:rust:*:*', 54546, 14944); -INSERT INTO "cpes" ("id", "cpe", "short_cpe_id", "version_id") VALUES (160822, 'cpe:2.3:a:cantemo:portal:2.4.10:*:*:*:*:*:*:*', 6591, 16550345); -INSERT INTO "cpes" ("id", "cpe", "short_cpe_id", "version_id") VALUES (158726, 'cpe:2.3:a:calderalabs:caldera_forms:1.3.0.1:*:*:*:*:wordpress:*:*', 40143, 19462818); -INSERT INTO "cpes" ("id", "cpe", "short_cpe_id", "version_id") VALUES (159582, 'cpe:2.3:a:cambridge_enterprise:jbig-kit:1.3:*:*:*:*:*:*:*', 32816, 264113); -INSERT INTO "cpes" ("id", "cpe", "short_cpe_id", "version_id") VALUES (159775, 'cpe:2.3:a:candidate-application-form_project:candidate-application-form:1.3:*:*:*:*:wordpress:*:*', 8270, 264113); -INSERT INTO "cpes" ("id", "cpe", "short_cpe_id", "version_id") VALUES (157246, 'cpe:2.3:a:cached_project:cached:0.8.1:*:*:*:*:rust:*:*', 54546, 249774); -INSERT INTO "cpes" ("id", "cpe", "short_cpe_id", "version_id") VALUES (160827, 'cpe:2.3:a:cantemo:portal:2.4.6:*:*:*:*:*:*:*', 6591, 19497916); -INSERT INTO "cpes" ("id", "cpe", "short_cpe_id", "version_id") VALUES (160804, 'cpe:2.3:a:cantemo:portal:2.2.3:*:*:*:*:*:*:*', 6591, 251176); -INSERT INTO "cpes" ("id", "cpe", "short_cpe_id", "version_id") VALUES (158724, 'cpe:2.3:a:calderalabs:caldera_forms:1.2.2:*:*:*:*:wordpress:*:*', 40143, 258303); -INSERT INTO "cpes" ("id", "cpe", "short_cpe_id", "version_id") VALUES (160842, 'cpe:2.3:a:cantemo:portal:3.0.6.1:*:*:*:*:*:*:*', 6591, 6357014); -INSERT INTO "cpes" ("id", "cpe", "short_cpe_id", "version_id") VALUES (160844, 'cpe:2.3:a:cantemo:portal:3.0.8:*:*:*:*:*:*:*', 6591, 13940); -INSERT INTO "cpes" ("id", "cpe", "short_cpe_id", "version_id") VALUES (160824, 'cpe:2.3:a:cantemo:portal:2.4.3:*:*:*:*:*:*:*', 6591, 15029); -INSERT INTO "cpes" ("id", "cpe", "short_cpe_id", "version_id") VALUES (160771, 'cpe:2.3:a:cantemo:portal:1.5.0:*:*:*:*:*:*:*', 6591, 264098); -INSERT INTO "cpes" ("id", "cpe", "short_cpe_id", "version_id") VALUES (158762, 'cpe:2.3:a:calderalabs:caldera_forms:1.5.0:*:*:*:*:wordpress:*:*', 40143, 264098); -INSERT INTO "cpes" ("id", "cpe", "short_cpe_id", "version_id") VALUES (160773, 'cpe:2.3:a:cantemo:portal:1.5.2:*:*:*:*:*:*:*', 6591, 13284); -INSERT INTO "cpes" ("id", "cpe", "short_cpe_id", "version_id") VALUES (157215, 'cpe:2.3:a:cached_project:cached:0.14.0:*:*:*:*:rust:*:*', 54546, 7405670); -INSERT INTO "cpes" ("id", "cpe", "short_cpe_id", "version_id") VALUES (158722, 'cpe:2.3:a:calderalabs:caldera_forms:1.2.0:*:*:*:*:wordpress:*:*', 40143, 263438); -INSERT INTO "cpes" ("id", "cpe", "short_cpe_id", "version_id") VALUES (160840, 'cpe:2.3:a:cantemo:portal:3.0.5:*:*:*:*:*:*:*', 6591, 15003); -INSERT INTO "cpes" ("id", "cpe", "short_cpe_id", "version_id") VALUES (158752, 'cpe:2.3:a:calderalabs:caldera_forms:1.4.8:*:*:*:*:wordpress:*:*', 40143, 7083951); -INSERT INTO "cpes" ("id", "cpe", "short_cpe_id", "version_id") VALUES (158731, 'cpe:2.3:a:calderalabs:caldera_forms:1.3.2.1:*:*:*:*:wordpress:*:*', 40143, 19491331); -INSERT INTO "cpes" ("id", "cpe", "short_cpe_id", "version_id") VALUES (160887, 'cpe:2.3:a:cantemo:portal:3.4.8:*:*:*:*:*:*:*', 6591, 9540297); -INSERT INTO "cpes" ("id", "cpe", "short_cpe_id", "version_id") VALUES (160805, 'cpe:2.3:a:cantemo:portal:2.2.4:*:*:*:*:*:*:*', 6591, 14621); -INSERT INTO "cpes" ("id", "cpe", "short_cpe_id", "version_id") VALUES (160289, 'cpe:2.3:a:canonical:selinux:1\:0.10:*:*:*:*:*:*:*', 48168, null); -INSERT INTO "cpes" ("id", "cpe", "short_cpe_id", "version_id") VALUES (158711, 'cpe:2.3:a:calderalabs:caldera_forms:1.1.9.10:*:*:*:*:wordpress:*:*', 40143, 13117909); -INSERT INTO "cpes" ("id", "cpe", "short_cpe_id", "version_id") VALUES (160859, 'cpe:2.3:a:cantemo:portal:3.2.11:*:*:*:*:*:*:*', 6591, 12192601); -INSERT INTO "cpes" ("id", "cpe", "short_cpe_id", "version_id") VALUES (158706, 'cpe:2.3:a:calderalabs:caldera_forms:1.1.4:*:*:*:*:wordpress:*:*', 40143, 19490036); -INSERT INTO "cpes" ("id", "cpe", "short_cpe_id", "version_id") VALUES (160769, 'cpe:2.3:a:cantemo:portal:1.4.0:*:*:*:*:*:*:*', 6591, 260652); -INSERT INTO "cpes" ("id", "cpe", "short_cpe_id", "version_id") VALUES (158741, 'cpe:2.3:a:calderalabs:caldera_forms:1.4.0:*:*:*:*:wordpress:*:*', 40143, 260652); -INSERT INTO "cpes" ("id", "cpe", "short_cpe_id", "version_id") VALUES (160099, 'cpe:2.3:a:canonical:checkinstall:1.6.2:*:*:*:*:*:*:*', 17559, 261941); -INSERT INTO "cpes" ("id", "cpe", "short_cpe_id", "version_id") VALUES (158780, 'cpe:2.3:a:calderalabs:caldera_forms:1.6.2:*:*:*:*:wordpress:*:*', 40143, 261941); -INSERT INTO "cpes" ("id", "cpe", "short_cpe_id", "version_id") VALUES (160781, 'cpe:2.3:a:cantemo:portal:1.6.2:*:*:*:*:*:*:*', 6591, 261941); -INSERT INTO "cpes" ("id", "cpe", "short_cpe_id", "version_id") VALUES (160845, 'cpe:2.3:a:cantemo:portal:3.0.9:*:*:*:*:*:*:*', 6591, 13904); -INSERT INTO "cpes" ("id", "cpe", "short_cpe_id", "version_id") VALUES (157072, 'cpe:2.3:a:c2fo:comb:0.2.0:*:*:*:*:node.js:*:*', 4772, 265155); -INSERT INTO "cpes" ("id", "cpe", "short_cpe_id", "version_id") VALUES (160820, 'cpe:2.3:a:cantemo:portal:2.4.0:*:*:*:*:*:*:*', 6591, 251181); -INSERT INTO "cpes" ("id", "cpe", "short_cpe_id", "version_id") VALUES (157231, 'cpe:2.3:a:cached_project:cached:0.2.3:*:*:*:*:rust:*:*', 54546, 253139); -INSERT INTO "cpes" ("id", "cpe", "short_cpe_id", "version_id") VALUES (160807, 'cpe:2.3:a:cantemo:portal:2.3.0:*:*:*:*:*:*:*', 6591, 257513); -INSERT INTO "cpes" ("id", "cpe", "short_cpe_id", "version_id") VALUES (158695, 'cpe:2.3:a:calderalabs:caldera_forms:1.0.5:*:*:*:*:wordpress:*:*', 40143, 264114); -INSERT INTO "cpes" ("id", "cpe", "short_cpe_id", "version_id") VALUES (160806, 'cpe:2.3:a:cantemo:portal:2.2.5:*:*:*:*:*:*:*', 6591, 254832); -INSERT INTO "cpes" ("id", "cpe", "short_cpe_id", "version_id") VALUES (157090, 'cpe:2.3:a:c2fo:comb:0.3.6:*:*:*:*:node.js:*:*', 4772, 6138488); -INSERT INTO "cpes" ("id", "cpe", "short_cpe_id", "version_id") VALUES (160879, 'cpe:2.3:a:cantemo:portal:3.4.0:*:*:*:*:*:*:*', 6591, 243167); -INSERT INTO "cpes" ("id", "cpe", "short_cpe_id", "version_id") VALUES (159779, 'cpe:2.3:a:candlepinproject:candlepin:0.4.5:*:*:*:*:*:*:*', 23153, 12797296); -INSERT INTO "cpes" ("id", "cpe", "short_cpe_id", "version_id") VALUES (160888, 'cpe:2.3:a:cantemo:portal:3.4.9:*:*:*:*:*:*:*', 6591, 19481914); -INSERT INTO "cpes" ("id", "cpe", "short_cpe_id", "version_id") VALUES (158738, 'cpe:2.3:a:calderalabs:caldera_forms:1.3.5.2:*:*:*:*:wordpress:*:*', 40143, 17151752); -INSERT INTO "cpes" ("id", "cpe", "short_cpe_id", "version_id") VALUES (160873, 'cpe:2.3:a:cantemo:portal:3.3.3:*:*:*:*:*:*:*', 6591, 19508585); -INSERT INTO "cpes" ("id", "cpe", "short_cpe_id", "version_id") VALUES (158790, 'cpe:2.3:a:calendarscripts:konnichiwa:0.8.3:*:*:*:*:wordpress:*:*', 31044, 5670099); -INSERT INTO "cpes" ("id", "cpe", "short_cpe_id", "version_id") VALUES (157056, 'cpe:2.3:a:c2fo:comb:0.0.5:*:*:*:*:node.js:*:*', 4772, 14796); -INSERT INTO "cpes" ("id", "cpe", "short_cpe_id", "version_id") VALUES (160889, 'cpe:2.3:a:cantemo:portal:4.0.0:*:*:*:*:*:*:*', 6591, 252612); -INSERT INTO "cpes" ("id", "cpe", "short_cpe_id", "version_id") VALUES (159558, 'cpe:2.3:a:call_project:call:4.0.0:*:*:*:*:node.js:*:*', 50021, 252612); -INSERT INTO "cpes" ("id", "cpe", "short_cpe_id", "version_id") VALUES (159556, 'cpe:2.3:a:call_project:call:3.0.3:*:*:*:*:node.js:*:*', 50021, 1394); -INSERT INTO "cpes" ("id", "cpe", "short_cpe_id", "version_id") VALUES (160838, 'cpe:2.3:a:cantemo:portal:3.0.3:*:*:*:*:*:*:*', 6591, 1394); -INSERT INTO "cpes" ("id", "cpe", "short_cpe_id", "version_id") VALUES (160874, 'cpe:2.3:a:cantemo:portal:3.3.4:*:*:*:*:*:*:*', 6591, 15028); -INSERT INTO "cpes" ("id", "cpe", "short_cpe_id", "version_id") VALUES (158748, 'cpe:2.3:a:calderalabs:caldera_forms:1.4.5.1:*:*:*:*:wordpress:*:*', 40143, 9909761); -INSERT INTO "cpes" ("id", "cpe", "short_cpe_id", "version_id") VALUES (157091, 'cpe:2.3:a:c2fo:comb:0.4.0:*:*:*:*:node.js:*:*', 4772, 249755); -INSERT INTO "cpes" ("id", "cpe", "short_cpe_id", "version_id") VALUES (160784, 'cpe:2.3:a:cantemo:portal:1.6.5:*:*:*:*:*:*:*', 6591, 19541079); -INSERT INTO "cpes" ("id", "cpe", "short_cpe_id", "version_id") VALUES (158733, 'cpe:2.3:a:calderalabs:caldera_forms:1.3.3.1:*:*:*:*:wordpress:*:*', 40143, 19469911); -INSERT INTO "cpes" ("id", "cpe", "short_cpe_id", "version_id") VALUES (160800, 'cpe:2.3:a:cantemo:portal:2.1.6:*:*:*:*:*:*:*', 6591, 250722); -INSERT INTO "cpes" ("id", "cpe", "short_cpe_id", "version_id") VALUES (159585, 'cpe:2.3:a:cambridge_enterprise:jbig-kit:1.6:*:*:*:*:*:*:*', 32816, 19532572); -INSERT INTO "cpes" ("id", "cpe", "short_cpe_id", "version_id") VALUES (157225, 'cpe:2.3:a:cached_project:cached:0.21.0:*:*:*:*:rust:*:*', 54546, 5128616); -INSERT INTO "cpes" ("id", "cpe", "short_cpe_id", "version_id") VALUES (158720, 'cpe:2.3:a:calderalabs:caldera_forms:1.1.9.9:*:*:*:*:wordpress:*:*', 40143, 8912914); -INSERT INTO "cpes" ("id", "cpe", "short_cpe_id", "version_id") VALUES (159563, 'cpe:2.3:a:call_project:call:5.0.2:*:*:*:*:node.js:*:*', 50021, 15193); -INSERT INTO "cpes" ("id", "cpe", "short_cpe_id", "version_id") VALUES (160808, 'cpe:2.3:a:cantemo:portal:2.3.1:*:*:*:*:*:*:*', 6591, 264996); -INSERT INTO "cpes" ("id", "cpe", "short_cpe_id", "version_id") VALUES (157220, 'cpe:2.3:a:cached_project:cached:0.17.0:*:*:*:*:rust:*:*', 54546, 6895007); -INSERT INTO "cpes" ("id", "cpe", "short_cpe_id", "version_id") VALUES (157083, 'cpe:2.3:a:c2fo:comb:0.2.9:*:*:*:*:node.js:*:*', 4772, 19487481); -INSERT INTO "cpes" ("id", "cpe", "short_cpe_id", "version_id") VALUES (160192, 'cpe:2.3:a:canonical:metal_as_a_service:1.9.0:alpha4:*:*:*:*:*:*', 54486, 215573); -INSERT INTO "cpes" ("id", "cpe", "short_cpe_id", "version_id") VALUES (160849, 'cpe:2.3:a:cantemo:portal:3.1.3:*:*:*:*:*:*:*', 6591, 9113); -INSERT INTO "cpes" ("id", "cpe", "short_cpe_id", "version_id") VALUES (158737, 'cpe:2.3:a:calderalabs:caldera_forms:1.3.5.1:*:*:*:*:wordpress:*:*', 40143, 19532557); -INSERT INTO "cpes" ("id", "cpe", "short_cpe_id", "version_id") VALUES (158743, 'cpe:2.3:a:calderalabs:caldera_forms:1.4.2:*:*:*:*:wordpress:*:*', 40143, 257682); -INSERT INTO "cpes" ("id", "cpe", "short_cpe_id", "version_id") VALUES (160785, 'cpe:2.3:a:cantemo:portal:1.6.6:*:*:*:*:*:*:*', 6591, 5617453); -INSERT INTO "cpes" ("id", "cpe", "short_cpe_id", "version_id") VALUES (157082, 'cpe:2.3:a:c2fo:comb:0.2.8:*:*:*:*:node.js:*:*', 4772, 19487482); -INSERT INTO "cpes" ("id", "cpe", "short_cpe_id", "version_id") VALUES (158749, 'cpe:2.3:a:calderalabs:caldera_forms:1.4.5:*:*:*:*:wordpress:*:*', 40143, 7892814); -INSERT INTO "cpes" ("id", "cpe", "short_cpe_id", "version_id") VALUES (157209, 'cpe:2.3:a:cached_project:cached:0.10.0:*:*:*:*:rust:*:*', 54546, 249772); -INSERT INTO "cpes" ("id", "cpe", "short_cpe_id", "version_id") VALUES (158723, 'cpe:2.3:a:calderalabs:caldera_forms:1.2.1:*:*:*:*:wordpress:*:*', 40143, 264897); -INSERT INTO "cpes" ("id", "cpe", "short_cpe_id", "version_id") VALUES (158728, 'cpe:2.3:a:calderalabs:caldera_forms:1.3.0:*:*:*:*:wordpress:*:*', 40143, 264338); -INSERT INTO "cpes" ("id", "cpe", "short_cpe_id", "version_id") VALUES (158766, 'cpe:2.3:a:calderalabs:caldera_forms:1.5.3.1:*:*:*:*:wordpress:*:*', 40143, 19462971); -INSERT INTO "cpes" ("id", "cpe", "short_cpe_id", "version_id") VALUES (157234, 'cpe:2.3:a:cached_project:cached:0.3.1:*:*:*:*:rust:*:*', 54546, 252261); -INSERT INTO "cpes" ("id", "cpe", "short_cpe_id", "version_id") VALUES (157085, 'cpe:2.3:a:c2fo:comb:0.3.1:*:*:*:*:node.js:*:*', 4772, 252261); -INSERT INTO "cpes" ("id", "cpe", "short_cpe_id", "version_id") VALUES (157055, 'cpe:2.3:a:c2fo:comb:0.0.4:*:*:*:*:node.js:*:*', 4772, 252547); -INSERT INTO "cpes" ("id", "cpe", "short_cpe_id", "version_id") VALUES (158704, 'cpe:2.3:a:calderalabs:caldera_forms:1.1.2:*:*:*:*:wordpress:*:*', 40143, 22072); -INSERT INTO "cpes" ("id", "cpe", "short_cpe_id", "version_id") VALUES (160790, 'cpe:2.3:a:cantemo:portal:2.0.4:*:*:*:*:*:*:*', 6591, 2683); -INSERT INTO "cpes" ("id", "cpe", "short_cpe_id", "version_id") VALUES (159557, 'cpe:2.3:a:call_project:call:3.0.4:*:*:*:*:node.js:*:*', 50021, 252066); -INSERT INTO "cpes" ("id", "cpe", "short_cpe_id", "version_id") VALUES (161218, 'cpe:2.3:a:capstone-engine:capstone:3.0.4:*:*:*:*:*:*:*', 8296, 252066); -INSERT INTO "cpes" ("id", "cpe", "short_cpe_id", "version_id") VALUES (160839, 'cpe:2.3:a:cantemo:portal:3.0.4:*:*:*:*:*:*:*', 6591, 252066); -INSERT INTO "cpes" ("id", "cpe", "short_cpe_id", "version_id") VALUES (157088, 'cpe:2.3:a:c2fo:comb:0.3.4:*:*:*:*:node.js:*:*', 4772, 252638); -INSERT INTO "cpes" ("id", "cpe", "short_cpe_id", "version_id") VALUES (158705, 'cpe:2.3:a:calderalabs:caldera_forms:1.1.3:*:*:*:*:wordpress:*:*', 40143, 249058); -INSERT INTO "cpes" ("id", "cpe", "short_cpe_id", "version_id") VALUES (157073, 'cpe:2.3:a:c2fo:comb:0.2.10:*:*:*:*:node.js:*:*', 4772, 11466378); -INSERT INTO "cpes" ("id", "cpe", "short_cpe_id", "version_id") VALUES (160843, 'cpe:2.3:a:cantemo:portal:3.0.7:*:*:*:*:*:*:*', 6591, 13967); -INSERT INTO "cpes" ("id", "cpe", "short_cpe_id", "version_id") VALUES (160870, 'cpe:2.3:a:cantemo:portal:3.3.0:*:*:*:*:*:*:*', 6591, 15264); -INSERT INTO "cpes" ("id", "cpe", "short_cpe_id", "version_id") VALUES (160833, 'cpe:2.3:a:cantemo:portal:3.0.10:*:*:*:*:*:*:*', 6591, 13943); -INSERT INTO "cpes" ("id", "cpe", "short_cpe_id", "version_id") VALUES (160886, 'cpe:2.3:a:cantemo:portal:3.4.7:*:*:*:*:*:*:*', 6591, 8873); -INSERT INTO "cpes" ("id", "cpe", "short_cpe_id", "version_id") VALUES (158725, 'cpe:2.3:a:calderalabs:caldera_forms:1.2.3:*:*:*:*:wordpress:*:*', 40143, 247848); -INSERT INTO "cpes" ("id", "cpe", "short_cpe_id", "version_id") VALUES (157054, 'cpe:2.3:a:c2fo:comb:0.0.3:*:*:*:*:node.js:*:*', 4772, 264643); -INSERT INTO "cpes" ("id", "cpe", "short_cpe_id", "version_id") VALUES (158773, 'cpe:2.3:a:calderalabs:caldera_forms:1.5.7.1:*:*:*:*:wordpress:*:*', 40143, 19469924); -INSERT INTO "cpes" ("id", "cpe", "short_cpe_id", "version_id") VALUES (157071, 'cpe:2.3:a:c2fo:comb:0.1.9:*:*:*:*:node.js:*:*', 4772, 233375); -INSERT INTO "cpes" ("id", "cpe", "short_cpe_id", "version_id") VALUES (159552, 'cpe:2.3:a:call_project:call:2.0.2:*:*:*:*:node.js:*:*', 50021, 262155); -INSERT INTO "cpes" ("id", "cpe", "short_cpe_id", "version_id") VALUES (160788, 'cpe:2.3:a:cantemo:portal:2.0.2:*:*:*:*:*:*:*', 6591, 262155); -INSERT INTO "cpes" ("id", "cpe", "short_cpe_id", "version_id") VALUES (160797, 'cpe:2.3:a:cantemo:portal:2.1.3:*:*:*:*:*:*:*', 6591, 252640); -INSERT INTO "cpes" ("id", "cpe", "short_cpe_id", "version_id") VALUES (160863, 'cpe:2.3:a:cantemo:portal:3.2.3:*:*:*:*:*:*:*', 6591, 249253); -INSERT INTO "cpes" ("id", "cpe", "short_cpe_id", "version_id") VALUES (159583, 'cpe:2.3:a:cambridge_enterprise:jbig-kit:1.4:*:*:*:*:*:*:*', 32816, 19487001); -INSERT INTO "cpes" ("id", "cpe", "short_cpe_id", "version_id") VALUES (158734, 'cpe:2.3:a:calderalabs:caldera_forms:1.3.3:*:*:*:*:wordpress:*:*', 40143, 11418); -INSERT INTO "cpes" ("id", "cpe", "short_cpe_id", "version_id") VALUES (157242, 'cpe:2.3:a:cached_project:cached:0.6.1:*:*:*:*:rust:*:*', 54546, 256416); -INSERT INTO "cpes" ("id", "cpe", "short_cpe_id", "version_id") VALUES (159773, 'cpe:2.3:a:candidate-application-form_project:candidate-application-form:1.1:*:*:*:*:wordpress:*:*', 8270, 263265); -INSERT INTO "cpes" ("id", "cpe", "short_cpe_id", "version_id") VALUES (158750, 'cpe:2.3:a:calderalabs:caldera_forms:1.4.6:*:*:*:*:wordpress:*:*', 40143, 13517); -INSERT INTO "cpes" ("id", "cpe", "short_cpe_id", "version_id") VALUES (160837, 'cpe:2.3:a:cantemo:portal:3.0.2:*:*:*:*:*:*:*', 6591, 19491083); -INSERT INTO "cpes" ("id", "cpe", "short_cpe_id", "version_id") VALUES (158767, 'cpe:2.3:a:calderalabs:caldera_forms:1.5.3:*:*:*:*:wordpress:*:*', 40143, 10817733); -INSERT INTO "cpes" ("id", "cpe", "short_cpe_id", "version_id") VALUES (158772, 'cpe:2.3:a:calderalabs:caldera_forms:1.5.6:*:*:*:*:wordpress:*:*', 40143, 19291862); -INSERT INTO "cpes" ("id", "cpe", "short_cpe_id", "version_id") VALUES (160777, 'cpe:2.3:a:cantemo:portal:1.5.6:*:*:*:*:*:*:*', 6591, 19291862); -INSERT INTO "cpes" ("id", "cpe", "short_cpe_id", "version_id") VALUES (160881, 'cpe:2.3:a:cantemo:portal:3.4.2:*:*:*:*:*:*:*', 6591, 1365); -INSERT INTO "cpes" ("id", "cpe", "short_cpe_id", "version_id") VALUES (158754, 'cpe:2.3:a:calderalabs:caldera_forms:1.5.0.10:*:*:*:*:wordpress:*:*', 40143, 10429338); -INSERT INTO "cpes" ("id", "cpe", "short_cpe_id", "version_id") VALUES (157244, 'cpe:2.3:a:cached_project:cached:0.7.0:*:*:*:*:rust:*:*', 54546, 264249); -INSERT INTO "cpes" ("id", "cpe", "short_cpe_id", "version_id") VALUES (159577, 'cpe:2.3:a:cambridge_enterprise:jbig-kit:0.8:*:*:*:*:*:*:*', 32816, 244764); -INSERT INTO "cpes" ("id", "cpe", "short_cpe_id", "version_id") VALUES (158778, 'cpe:2.3:a:calderalabs:caldera_forms:1.6.1.1:*:*:*:*:wordpress:*:*', 40143, 19490475); -INSERT INTO "cpes" ("id", "cpe", "short_cpe_id", "version_id") VALUES (160779, 'cpe:2.3:a:cantemo:portal:1.6.0:*:*:*:*:*:*:*', 6591, 263437); -INSERT INTO "cpes" ("id", "cpe", "short_cpe_id", "version_id") VALUES (158777, 'cpe:2.3:a:calderalabs:caldera_forms:1.6.0:*:*:*:*:wordpress:*:*', 40143, 263437); -INSERT INTO "cpes" ("id", "cpe", "short_cpe_id", "version_id") VALUES (157240, 'cpe:2.3:a:cached_project:cached:0.5.0:*:*:*:*:rust:*:*', 54546, 252454); -INSERT INTO "cpes" ("id", "cpe", "short_cpe_id", "version_id") VALUES (157077, 'cpe:2.3:a:c2fo:comb:0.2.3:*:*:*:*:node.js:*:*', 4772, 253139); -INSERT INTO "cpes" ("id", "cpe", "short_cpe_id", "version_id") VALUES (160846, 'cpe:2.3:a:cantemo:portal:3.1.0:*:*:*:*:*:*:*', 6591, 262607); -INSERT INTO "cpes" ("id", "cpe", "short_cpe_id", "version_id") VALUES (159580, 'cpe:2.3:a:cambridge_enterprise:jbig-kit:1.1:*:*:*:*:*:*:*', 32816, 263265); -INSERT INTO "cpes" ("id", "cpe", "short_cpe_id", "version_id") VALUES (159555, 'cpe:2.3:a:call_project:call:3.0.2:*:*:*:*:node.js:*:*', 50021, 19491083); -INSERT INTO "cpes" ("id", "cpe", "short_cpe_id", "version_id") VALUES (157078, 'cpe:2.3:a:c2fo:comb:0.2.4:*:*:*:*:node.js:*:*', 4772, 15235); -INSERT INTO "cpes" ("id", "cpe", "short_cpe_id", "version_id") VALUES (157232, 'cpe:2.3:a:cached_project:cached:0.2.4:*:*:*:*:rust:*:*', 54546, 15235); -INSERT INTO "cpes" ("id", "cpe", "short_cpe_id", "version_id") VALUES (160876, 'cpe:2.3:a:cantemo:portal:3.3.6:*:*:*:*:*:*:*', 6591, 9111); -INSERT INTO "cpes" ("id", "cpe", "short_cpe_id", "version_id") VALUES (159576, 'cpe:2.3:a:cambridge_enterprise:jbig-kit:0.7:*:*:*:*:*:*:*', 32816, 5835723); -INSERT INTO "cpes" ("id", "cpe", "short_cpe_id", "version_id") VALUES (160809, 'cpe:2.3:a:cantemo:portal:2.3.10:*:*:*:*:*:*:*', 6591, 19324110); -INSERT INTO "cpes" ("id", "cpe", "short_cpe_id", "version_id") VALUES (160818, 'cpe:2.3:a:cantemo:portal:2.3.8:*:*:*:*:*:*:*', 6591, 8720); -INSERT INTO "cpes" ("id", "cpe", "short_cpe_id", "version_id") VALUES (157087, 'cpe:2.3:a:c2fo:comb:0.3.3:*:*:*:*:node.js:*:*', 4772, 19487573); -INSERT INTO "cpes" ("id", "cpe", "short_cpe_id", "version_id") VALUES (160830, 'cpe:2.3:a:cantemo:portal:2.4.9:*:*:*:*:*:*:*', 6591, 19518492); -INSERT INTO "cpes" ("id", "cpe", "short_cpe_id", "version_id") VALUES (158755, 'cpe:2.3:a:calderalabs:caldera_forms:1.5.0.1-3:*:*:*:*:wordpress:*:*', 40143, 13695671); -INSERT INTO "cpes" ("id", "cpe", "short_cpe_id", "version_id") VALUES (160869, 'cpe:2.3:a:cantemo:portal:3.2.9:*:*:*:*:*:*:*', 6591, 19480553); -INSERT INTO "cpes" ("id", "cpe", "short_cpe_id", "version_id") VALUES (158776, 'cpe:2.3:a:calderalabs:caldera_forms:1.5.9:*:*:*:*:wordpress:*:*', 40143, 19460749); -INSERT INTO "cpes" ("id", "cpe", "short_cpe_id", "version_id") VALUES (160774, 'cpe:2.3:a:cantemo:portal:1.5.3:*:*:*:*:*:*:*', 6591, 10817733); -INSERT INTO "cpes" ("id", "cpe", "short_cpe_id", "version_id") VALUES (160603, 'cpe:2.3:a:canonical:update-manager:1\:0.87.31.1:*:*:*:*:*:*:*', 11798, null); -INSERT INTO "cpes" ("id", "cpe", "short_cpe_id", "version_id") VALUES (157241, 'cpe:2.3:a:cached_project:cached:0.6.0:*:*:*:*:rust:*:*', 54546, 248486); -INSERT INTO "cpes" ("id", "cpe", "short_cpe_id", "version_id") VALUES (159586, 'cpe:2.3:a:cambridge_enterprise:jbig-kit:2.0:*:*:*:*:*:*:*', 32816, 19494556); -INSERT INTO "cpes" ("id", "cpe", "short_cpe_id", "version_id") VALUES (158690, 'cpe:2.3:a:calderalabs:caldera_forms:1.0.0:*:*:*:*:wordpress:*:*', 40143, 265153); -INSERT INTO "cpes" ("id", "cpe", "short_cpe_id", "version_id") VALUES (160588, 'cpe:2.3:a:canonical:ubuntu_download_manager:-:*:*:*:*:*:*:*', 48783, 19513403); -INSERT INTO "cpes" ("id", "cpe", "short_cpe_id", "version_id") VALUES (159776, 'cpe:2.3:a:candlepinproject:candlepin:-:*:*:*:*:*:*:*', 23153, 19513403); -INSERT INTO "cpes" ("id", "cpe", "short_cpe_id", "version_id") VALUES (160813, 'cpe:2.3:a:cantemo:portal:2.3.3:*:*:*:*:*:*:*', 6591, 252815); -INSERT INTO "cpes" ("id", "cpe", "short_cpe_id", "version_id") VALUES (158756, 'cpe:2.3:a:calderalabs:caldera_forms:1.5.0.4:*:*:*:*:wordpress:*:*', 40143, 10522622); -INSERT INTO "cpes" ("id", "cpe", "short_cpe_id", "version_id") VALUES (160848, 'cpe:2.3:a:cantemo:portal:3.1.2:*:*:*:*:*:*:*', 6591, 13150); -INSERT INTO "cpes" ("id", "cpe", "short_cpe_id", "version_id") VALUES (160817, 'cpe:2.3:a:cantemo:portal:2.3.7:*:*:*:*:*:*:*', 6591, 17890); -INSERT INTO "cpes" ("id", "cpe", "short_cpe_id", "version_id") VALUES (160811, 'cpe:2.3:a:cantemo:portal:2.3.12:*:*:*:*:*:*:*', 6591, 11647042); -INSERT INTO "cpes" ("id", "cpe", "short_cpe_id", "version_id") VALUES (158718, 'cpe:2.3:a:calderalabs:caldera_forms:1.1.9.7:*:*:*:*:wordpress:*:*', 40143, 19478693); -INSERT INTO "cpes" ("id", "cpe", "short_cpe_id", "version_id") VALUES (160854, 'cpe:2.3:a:cantemo:portal:3.1.8:*:*:*:*:*:*:*', 6591, 19468629); -INSERT INTO "cpes" ("id", "cpe", "short_cpe_id", "version_id") VALUES (160775, 'cpe:2.3:a:cantemo:portal:1.5.4:*:*:*:*:*:*:*', 6591, 14946); -INSERT INTO "cpes" ("id", "cpe", "short_cpe_id", "version_id") VALUES (160829, 'cpe:2.3:a:cantemo:portal:2.4.8:*:*:*:*:*:*:*', 6591, 19323850); -INSERT INTO "cpes" ("id", "cpe", "short_cpe_id", "version_id") VALUES (158745, 'cpe:2.3:a:calderalabs:caldera_forms:1.4.3:*:*:*:*:wordpress:*:*', 40143, 256715); -INSERT INTO "cpes" ("id", "cpe", "short_cpe_id", "version_id") VALUES (158768, 'cpe:2.3:a:calderalabs:caldera_forms:1.5.4:*:*:*:*:wordpress:*:*', 40143, 14946); -INSERT INTO "cpes" ("id", "cpe", "short_cpe_id", "version_id") VALUES (158736, 'cpe:2.3:a:calderalabs:caldera_forms:1.3.4.2:*:*:*:*:wordpress:*:*', 40143, 6277397); -INSERT INTO "cpes" ("id", "cpe", "short_cpe_id", "version_id") VALUES (157210, 'cpe:2.3:a:cached_project:cached:0.1.0:*:*:*:*:rust:*:*', 54546, 265156); -INSERT INTO "cpes" ("id", "cpe", "short_cpe_id", "version_id") VALUES (157061, 'cpe:2.3:a:c2fo:comb:0.1.0:*:*:*:*:node.js:*:*', 4772, 265156); -INSERT INTO "cpes" ("id", "cpe", "short_cpe_id", "version_id") VALUES (159551, 'cpe:2.3:a:call_project:call:2.0.1:*:*:*:*:node.js:*:*', 50021, 265075); -INSERT INTO "cpes" ("id", "cpe", "short_cpe_id", "version_id") VALUES (160787, 'cpe:2.3:a:cantemo:portal:2.0.1:*:*:*:*:*:*:*', 6591, 265075); -INSERT INTO "cpes" ("id", "cpe", "short_cpe_id", "version_id") VALUES (160187, 'cpe:2.3:a:canonical:lxd:2.0.1:*:*:*:*:*:*:*', 36858, 265075); -INSERT INTO "cpes" ("id", "cpe", "short_cpe_id", "version_id") VALUES (160864, 'cpe:2.3:a:cantemo:portal:3.2.4:*:*:*:*:*:*:*', 6591, 19500948); -INSERT INTO "cpes" ("id", "cpe", "short_cpe_id", "version_id") VALUES (157068, 'cpe:2.3:a:c2fo:comb:0.1.6:*:*:*:*:node.js:*:*', 4772, 14867); -INSERT INTO "cpes" ("id", "cpe", "short_cpe_id", "version_id") VALUES (158709, 'cpe:2.3:a:calderalabs:caldera_forms:1.1.7:*:*:*:*:wordpress:*:*', 40143, 252657); -INSERT INTO "cpes" ("id", "cpe", "short_cpe_id", "version_id") VALUES (160878, 'cpe:2.3:a:cantemo:portal:3.3.8:*:*:*:*:*:*:*', 6591, 14268199); -INSERT INTO "cpes" ("id", "cpe", "short_cpe_id", "version_id") VALUES (158775, 'cpe:2.3:a:calderalabs:caldera_forms:1.5.8:*:*:*:*:wordpress:*:*', 40143, 10371); -INSERT INTO "cpes" ("id", "cpe", "short_cpe_id", "version_id") VALUES (160778, 'cpe:2.3:a:cantemo:portal:1.5.7:*:*:*:*:*:*:*', 6591, 19531474); -INSERT INTO "cpes" ("id", "cpe", "short_cpe_id", "version_id") VALUES (157069, 'cpe:2.3:a:c2fo:comb:0.1.7:*:*:*:*:node.js:*:*', 4772, 15188); -INSERT INTO "cpes" ("id", "cpe", "short_cpe_id", "version_id") VALUES (158774, 'cpe:2.3:a:calderalabs:caldera_forms:1.5.7:*:*:*:*:wordpress:*:*', 40143, 19531474); -INSERT INTO "cpes" ("id", "cpe", "short_cpe_id", "version_id") VALUES (157065, 'cpe:2.3:a:c2fo:comb:0.1.3:*:*:*:*:node.js:*:*', 4772, 250884); -INSERT INTO "cpes" ("id", "cpe", "short_cpe_id", "version_id") VALUES (158717, 'cpe:2.3:a:calderalabs:caldera_forms:1.1.9.6:*:*:*:*:wordpress:*:*', 40143, 8474638); -INSERT INTO "cpes" ("id", "cpe", "short_cpe_id", "version_id") VALUES (159572, 'cpe:2.3:a:calmquist.static-server_project:calmquist.static-server:0.1.1:*:*:*:*:node.js:*:*', 24723, 265151); -INSERT INTO "cpes" ("id", "cpe", "short_cpe_id", "version_id") VALUES (157063, 'cpe:2.3:a:c2fo:comb:0.1.1:*:*:*:*:node.js:*:*', 4772, 265151); -INSERT INTO "cpes" ("id", "cpe", "short_cpe_id", "version_id") VALUES (157229, 'cpe:2.3:a:cached_project:cached:0.2.2:*:*:*:*:rust:*:*', 54546, 263698); -INSERT INTO "cpes" ("id", "cpe", "short_cpe_id", "version_id") VALUES (157076, 'cpe:2.3:a:c2fo:comb:0.2.2:*:*:*:*:node.js:*:*', 4772, 263698); -INSERT INTO "cpes" ("id", "cpe", "short_cpe_id", "version_id") VALUES (160789, 'cpe:2.3:a:cantemo:portal:2.0.3:*:*:*:*:*:*:*', 6591, 263699); -INSERT INTO "cpes" ("id", "cpe", "short_cpe_id", "version_id") VALUES (157245, 'cpe:2.3:a:cached_project:cached:0.8.0:*:*:*:*:rust:*:*', 54546, 15081); -INSERT INTO "cpes" ("id", "cpe", "short_cpe_id", "version_id") VALUES (160883, 'cpe:2.3:a:cantemo:portal:3.4.4:*:*:*:*:*:*:*', 6591, 12448282); -INSERT INTO "cpes" ("id", "cpe", "short_cpe_id", "version_id") VALUES (157217, 'cpe:2.3:a:cached_project:cached:0.15.0:*:*:*:*:rust:*:*', 54546, 15050); -INSERT INTO "cpes" ("id", "cpe", "short_cpe_id", "version_id") VALUES (160786, 'cpe:2.3:a:cantemo:portal:2.0.0:*:*:*:*:*:*:*', 6591, 265076); -INSERT INTO "cpes" ("id", "cpe", "short_cpe_id", "version_id") VALUES (159550, 'cpe:2.3:a:call_project:call:2.0.0:*:*:*:*:node.js:*:*', 50021, 265076); -INSERT INTO "cpes" ("id", "cpe", "short_cpe_id", "version_id") VALUES (157097, 'cpe:2.3:a:c2fo:comb:2.0.0:*:*:*:*:node.js:*:*', 4772, 265076); -INSERT INTO "cpes" ("id", "cpe", "short_cpe_id", "version_id") VALUES (157080, 'cpe:2.3:a:c2fo:comb:0.2.6:*:*:*:*:node.js:*:*', 4772, 6140300); -INSERT INTO "cpes" ("id", "cpe", "short_cpe_id", "version_id") VALUES (160866, 'cpe:2.3:a:cantemo:portal:3.2.6:*:*:*:*:*:*:*', 6591, 8889); -INSERT INTO "cpes" ("id", "cpe", "short_cpe_id", "version_id") VALUES (160871, 'cpe:2.3:a:cantemo:portal:3.3.1:*:*:*:*:*:*:*', 6591, 237532); -INSERT INTO "cpes" ("id", "cpe", "short_cpe_id", "version_id") VALUES (157214, 'cpe:2.3:a:cached_project:cached:0.13.1:*:*:*:*:rust:*:*', 54546, 264231); -INSERT INTO "cpes" ("id", "cpe", "short_cpe_id", "version_id") VALUES (157221, 'cpe:2.3:a:cached_project:cached:0.18.0:*:*:*:*:rust:*:*', 54546, 11098064); -INSERT INTO "cpes" ("id", "cpe", "short_cpe_id", "version_id") VALUES (157162, 'cpe:2.3:a:c97:cart_engine:3.0:*:*:*:*:*:*:*', 40676, 1795); -INSERT INTO "cpes" ("id", "cpe", "short_cpe_id", "version_id") VALUES (159578, 'cpe:2.3:a:cambridge_enterprise:jbig-kit:0.9:*:*:*:*:*:*:*', 32816, 19487340); -INSERT INTO "cpes" ("id", "cpe", "short_cpe_id", "version_id") VALUES (160795, 'cpe:2.3:a:cantemo:portal:2.1.1:*:*:*:*:*:*:*', 6591, 263266); -INSERT INTO "cpes" ("id", "cpe", "short_cpe_id", "version_id") VALUES (160875, 'cpe:2.3:a:cantemo:portal:3.3.5:*:*:*:*:*:*:*', 6591, 15302); -INSERT INTO "cpes" ("id", "cpe", "short_cpe_id", "version_id") VALUES (160815, 'cpe:2.3:a:cantemo:portal:2.3.5:*:*:*:*:*:*:*', 6591, 8918); -INSERT INTO "cpes" ("id", "cpe", "short_cpe_id", "version_id") VALUES (160856, 'cpe:2.3:a:cantemo:portal:3.2.0:*:*:*:*:*:*:*', 6591, 2025); -INSERT INTO "cpes" ("id", "cpe", "short_cpe_id", "version_id") VALUES (157233, 'cpe:2.3:a:cached_project:cached:0.3.0:*:*:*:*:rust:*:*', 54546, 252814); -INSERT INTO "cpes" ("id", "cpe", "short_cpe_id", "version_id") VALUES (157084, 'cpe:2.3:a:c2fo:comb:0.3.0:*:*:*:*:node.js:*:*', 4772, 252814); -INSERT INTO "cpes" ("id", "cpe", "short_cpe_id", "version_id") VALUES (158770, 'cpe:2.3:a:calderalabs:caldera_forms:1.5.6.1:*:*:*:*:wordpress:*:*', 40143, 13917822); -INSERT INTO "cpes" ("id", "cpe", "short_cpe_id", "version_id") VALUES (158710, 'cpe:2.3:a:calderalabs:caldera_forms:1.1.8:*:*:*:*:wordpress:*:*', 40143, 252983); -INSERT INTO "cpes" ("id", "cpe", "short_cpe_id", "version_id") VALUES (158764, 'cpe:2.3:a:calderalabs:caldera_forms:1.5.2.1:*:*:*:*:wordpress:*:*', 40143, 19465563); -INSERT INTO "cpes" ("id", "cpe", "short_cpe_id", "version_id") VALUES (160782, 'cpe:2.3:a:cantemo:portal:1.6.3:*:*:*:*:*:*:*', 6591, 19486979); -INSERT INTO "cpes" ("id", "cpe", "short_cpe_id", "version_id") VALUES (158781, 'cpe:2.3:a:calderalabs:caldera_forms:1.6.3:*:*:*:*:wordpress:*:*', 40143, 19486979); -INSERT INTO "cpes" ("id", "cpe", "short_cpe_id", "version_id") VALUES (160885, 'cpe:2.3:a:cantemo:portal:3.4.6:*:*:*:*:*:*:*', 6591, 14489); -INSERT INTO "cpes" ("id", "cpe", "short_cpe_id", "version_id") VALUES (160201, 'cpe:2.3:a:canonical:metal_as_a_service:1.9.2:*:*:*:*:*:*:*', 54486, 14051023); -INSERT INTO "cpes" ("id", "cpe", "short_cpe_id", "version_id") VALUES (160596, 'cpe:2.3:a:canonical:update-manager:1\:0.142.19:*:*:*:*:*:*:*', 11798, null); -INSERT INTO "cpes" ("id", "cpe", "short_cpe_id", "version_id") VALUES (160831, 'cpe:2.3:a:cantemo:portal:3.0.0:*:*:*:*:*:*:*', 6591, 265074); -INSERT INTO "cpes" ("id", "cpe", "short_cpe_id", "version_id") VALUES (157235, 'cpe:2.3:a:cached_project:cached:0.4.0:*:*:*:*:rust:*:*', 54546, 249755); -INSERT INTO "cpes" ("id", "cpe", "short_cpe_id", "version_id") VALUES (160602, 'cpe:2.3:a:canonical:update-manager:1\:0.87.24:*:*:*:*:*:*:*', 11798, null); -INSERT INTO "cpes" ("id", "cpe", "short_cpe_id", "version_id") VALUES (160195, 'cpe:2.3:a:canonical:metal_as_a_service:1.9.0:beta2:*:*:*:*:*:*', 54486, 215573); -INSERT INTO "cpes" ("id", "cpe", "short_cpe_id", "version_id") VALUES (158744, 'cpe:2.3:a:calderalabs:caldera_forms:1.4.3.1:*:*:*:*:wordpress:*:*', 40143, 19471530); -INSERT INTO "cpes" ("id", "cpe", "short_cpe_id", "version_id") VALUES (158691, 'cpe:2.3:a:calderalabs:caldera_forms:1.0.1:*:*:*:*:wordpress:*:*', 40143, 265154); -INSERT INTO "cpes" ("id", "cpe", "short_cpe_id", "version_id") VALUES (160595, 'cpe:2.3:a:canonical:update-manager:1\:0.134.7:*:*:*:*:*:*:*', 11798, null); -INSERT INTO "cpes" ("id", "cpe", "short_cpe_id", "version_id") VALUES (160601, 'cpe:2.3:a:canonical:update-manager:1\:0.152.25.5:*:*:*:*:*:*:*', 11798, null); -INSERT INTO "cpes" ("id", "cpe", "short_cpe_id", "version_id") VALUES (160594, 'cpe:2.3:a:canonical:update-manager:1\:0.134.11.1:*:*:*:*:*:*:*', 11798, null); -INSERT INTO "cpes" ("id", "cpe", "short_cpe_id", "version_id") VALUES (160600, 'cpe:2.3:a:canonical:update-manager:1\:0.152.25:*:*:*:*:*:*:*', 11798, null); -INSERT INTO "cpes" ("id", "cpe", "short_cpe_id", "version_id") VALUES (160599, 'cpe:2.3:a:canonical:update-manager:1\:0.150.5.1:*:*:*:*:*:*:*', 11798, null); -INSERT INTO "cpes" ("id", "cpe", "short_cpe_id", "version_id") VALUES (158719, 'cpe:2.3:a:calderalabs:caldera_forms:1.1.9.8:*:*:*:*:wordpress:*:*', 40143, 10333707); -INSERT INTO "cpes" ("id", "cpe", "short_cpe_id", "version_id") VALUES (160825, 'cpe:2.3:a:cantemo:portal:2.4.4:*:*:*:*:*:*:*', 6591, 19502604); -INSERT INTO "cpes" ("id", "cpe", "short_cpe_id", "version_id") VALUES (157060, 'cpe:2.3:a:c2fo:comb:0.0.9:*:*:*:*:node.js:*:*', 4772, 14302); -INSERT INTO "cpes" ("id", "cpe", "short_cpe_id", "version_id") VALUES (160799, 'cpe:2.3:a:cantemo:portal:2.1.5:*:*:*:*:*:*:*', 6591, 15189); -INSERT INTO "cpes" ("id", "cpe", "short_cpe_id", "version_id") VALUES (160865, 'cpe:2.3:a:cantemo:portal:3.2.5:*:*:*:*:*:*:*', 6591, 14400); -INSERT INTO "cpes" ("id", "cpe", "short_cpe_id", "version_id") VALUES (157211, 'cpe:2.3:a:cached_project:cached:0.11.0:*:*:*:*:rust:*:*', 54546, 252639); -INSERT INTO "cpes" ("id", "cpe", "short_cpe_id", "version_id") VALUES (160855, 'cpe:2.3:a:cantemo:portal:3.1.9:*:*:*:*:*:*:*', 6591, 19484821); -INSERT INTO "cpes" ("id", "cpe", "short_cpe_id", "version_id") VALUES (160783, 'cpe:2.3:a:cantemo:portal:1.6.4:*:*:*:*:*:*:*', 6591, 8481); -INSERT INTO "cpes" ("id", "cpe", "short_cpe_id", "version_id") VALUES (158694, 'cpe:2.3:a:calderalabs:caldera_forms:1.0.4:*:*:*:*:wordpress:*:*', 40143, 265152); -INSERT INTO "cpes" ("id", "cpe", "short_cpe_id", "version_id") VALUES (157216, 'cpe:2.3:a:cached_project:cached:0.14.1:*:*:*:*:rust:*:*', 54546, 8952136); -INSERT INTO "cpes" ("id", "cpe", "short_cpe_id", "version_id") VALUES (157239, 'cpe:2.3:a:cached_project:cached:0.4.4:*:*:*:*:rust:*:*', 54546, 7256833); -INSERT INTO "cpes" ("id", "cpe", "short_cpe_id", "version_id") VALUES (160880, 'cpe:2.3:a:cantemo:portal:3.4.1:*:*:*:*:*:*:*', 6591, 11379260); -INSERT INTO "cpes" ("id", "cpe", "short_cpe_id", "version_id") VALUES (160196, 'cpe:2.3:a:canonical:metal_as_a_service:1.9.0:rc1:*:*:*:*:*:*', 54486, 215573); -INSERT INTO "cpes" ("id", "cpe", "short_cpe_id", "version_id") VALUES (160194, 'cpe:2.3:a:canonical:metal_as_a_service:1.9.0:beta1:*:*:*:*:*:*', 54486, 215573); -INSERT INTO "cpes" ("id", "cpe", "short_cpe_id", "version_id") VALUES (160190, 'cpe:2.3:a:canonical:metal_as_a_service:1.9.0:alpha2:*:*:*:*:*:*', 54486, 215573); -INSERT INTO "cpes" ("id", "cpe", "short_cpe_id", "version_id") VALUES (160199, 'cpe:2.3:a:canonical:metal_as_a_service:1.9.0:rc4:*:*:*:*:*:*', 54486, 215573); -INSERT INTO "cpes" ("id", "cpe", "short_cpe_id", "version_id") VALUES (160191, 'cpe:2.3:a:canonical:metal_as_a_service:1.9.0:alpha3:*:*:*:*:*:*', 54486, 215573); -INSERT INTO "cpes" ("id", "cpe", "short_cpe_id", "version_id") VALUES (160189, 'cpe:2.3:a:canonical:metal_as_a_service:1.9.0:alpha1:*:*:*:*:*:*', 54486, 215573); -INSERT INTO "cpes" ("id", "cpe", "short_cpe_id", "version_id") VALUES (160188, 'cpe:2.3:a:canonical:metal_as_a_service:1.9.0:-:*:*:*:*:*:*', 54486, 215573); -INSERT INTO "cpes" ("id", "cpe", "short_cpe_id", "version_id") VALUES (160197, 'cpe:2.3:a:canonical:metal_as_a_service:1.9.0:rc2:*:*:*:*:*:*', 54486, 215573); -INSERT INTO "cpes" ("id", "cpe", "short_cpe_id", "version_id") VALUES (160198, 'cpe:2.3:a:canonical:metal_as_a_service:1.9.0:rc3:*:*:*:*:*:*', 54486, 215573); -INSERT INTO "cpes" ("id", "cpe", "short_cpe_id", "version_id") VALUES (160193, 'cpe:2.3:a:canonical:metal_as_a_service:1.9.0:alpha5:*:*:*:*:*:*', 54486, 215573); -INSERT INTO "cpes" ("id", "cpe", "short_cpe_id", "version_id") VALUES (157226, 'cpe:2.3:a:cached_project:cached:0.21.1:*:*:*:*:rust:*:*', 54546, 19491213); -INSERT INTO "cpes" ("id", "cpe", "short_cpe_id", "version_id") VALUES (157219, 'cpe:2.3:a:cached_project:cached:0.16.0:*:*:*:*:rust:*:*', 54546, 3720103); -INSERT INTO "cpes" ("id", "cpe", "short_cpe_id", "version_id") VALUES (157213, 'cpe:2.3:a:cached_project:cached:0.13.0:*:*:*:*:rust:*:*', 54546, 14943); -INSERT INTO "cpes" ("id", "cpe", "short_cpe_id", "version_id") VALUES (157222, 'cpe:2.3:a:cached_project:cached:0.19.0:*:*:*:*:rust:*:*', 54546, 19269674); -INSERT INTO "cpes" ("id", "cpe", "short_cpe_id", "version_id") VALUES (158702, 'cpe:2.3:a:calderalabs:caldera_forms:1.1.10:*:*:*:*:wordpress:*:*', 40143, 19529343); -INSERT INTO "cpes" ("id", "cpe", "short_cpe_id", "version_id") VALUES (157212, 'cpe:2.3:a:cached_project:cached:0.12.0:*:*:*:*:rust:*:*', 54546, 241746); -INSERT INTO "cpes" ("id", "cpe", "short_cpe_id", "version_id") VALUES (157058, 'cpe:2.3:a:c2fo:comb:0.0.7:*:*:*:*:node.js:*:*', 4772, 14797); -INSERT INTO "cpes" ("id", "cpe", "short_cpe_id", "version_id") VALUES (158759, 'cpe:2.3:a:calderalabs:caldera_forms:1.5.0.7:*:*:*:*:wordpress:*:*', 40143, 11283815); -INSERT INTO "cpes" ("id", "cpe", "short_cpe_id", "version_id") VALUES (159561, 'cpe:2.3:a:call_project:call:5.0.0:*:*:*:*:node.js:*:*', 50021, 252059); -INSERT INTO "cpes" ("id", "cpe", "short_cpe_id", "version_id") VALUES (158697, 'cpe:2.3:a:calderalabs:caldera_forms:1.0.7:*:*:*:*:wordpress:*:*', 40143, 253846); -INSERT INTO "cpes" ("id", "cpe", "short_cpe_id", "version_id") VALUES (160852, 'cpe:2.3:a:cantemo:portal:3.1.6:*:*:*:*:*:*:*', 6591, 19484820); -INSERT INTO "cpes" ("id", "cpe", "short_cpe_id", "version_id") VALUES (159559, 'cpe:2.3:a:call_project:call:4.0.1:*:*:*:*:node.js:*:*', 50021, 1998); -INSERT INTO "cpes" ("id", "cpe", "short_cpe_id", "version_id") VALUES (157238, 'cpe:2.3:a:cached_project:cached:0.4.3:*:*:*:*:rust:*:*', 54546, 14945); -INSERT INTO "cpes" ("id", "cpe", "short_cpe_id", "version_id") VALUES (157223, 'cpe:2.3:a:cached_project:cached:0.20.0:*:*:*:*:rust:*:*', 54546, 7818861); -INSERT INTO "cpes" ("id", "cpe", "short_cpe_id", "version_id") VALUES (158742, 'cpe:2.3:a:calderalabs:caldera_forms:1.4.1:*:*:*:*:wordpress:*:*', 40143, 264115); -INSERT INTO "cpes" ("id", "cpe", "short_cpe_id", "version_id") VALUES (160770, 'cpe:2.3:a:cantemo:portal:1.4.1:*:*:*:*:*:*:*', 6591, 264115); -INSERT INTO "cpes" ("id", "cpe", "short_cpe_id", "version_id") VALUES (157064, 'cpe:2.3:a:c2fo:comb:0.1.2:*:*:*:*:node.js:*:*', 4772, 263169); -INSERT INTO "cpes" ("id", "cpe", "short_cpe_id", "version_id") VALUES (158751, 'cpe:2.3:a:calderalabs:caldera_forms:1.4.7:*:*:*:*:wordpress:*:*', 40143, 8795532); -INSERT INTO "cpes" ("id", "cpe", "short_cpe_id", "version_id") VALUES (159560, 'cpe:2.3:a:call_project:call:4.0.2:*:*:*:*:node.js:*:*', 50021, 12882); -INSERT INTO "cpes" ("id", "cpe", "short_cpe_id", "version_id") VALUES (160819, 'cpe:2.3:a:cantemo:portal:2.3.9:*:*:*:*:*:*:*', 6591, 19503485); -INSERT INTO "cpes" ("id", "cpe", "short_cpe_id", "version_id") VALUES (158692, 'cpe:2.3:a:calderalabs:caldera_forms:1.0.2:*:*:*:*:wordpress:*:*', 40143, 265150); -INSERT INTO "cpes" ("id", "cpe", "short_cpe_id", "version_id") VALUES (157207, 'cpe:2.3:a:cached-path-relative_project:cached-path-relative:1.0.2:*:*:*:*:node.js:*:*', 6930, 265150); -INSERT INTO "cpes" ("id", "cpe", "short_cpe_id", "version_id") VALUES (158735, 'cpe:2.3:a:calderalabs:caldera_forms:1.3.4.1:*:*:*:*:wordpress:*:*', 40143, 5600056); -INSERT INTO "cpes" ("id", "cpe", "short_cpe_id", "version_id") VALUES (160841, 'cpe:2.3:a:cantemo:portal:3.0.6:*:*:*:*:*:*:*', 6591, 19501164); -INSERT INTO "cpes" ("id", "cpe", "short_cpe_id", "version_id") VALUES (158758, 'cpe:2.3:a:calderalabs:caldera_forms:1.5.0.6:*:*:*:*:wordpress:*:*', 40143, 7235805); -INSERT INTO "cpes" ("id", "cpe", "short_cpe_id", "version_id") VALUES (160821, 'cpe:2.3:a:cantemo:portal:2.4.1:*:*:*:*:*:*:*', 6591, 15337); -INSERT INTO "cpes" ("id", "cpe", "short_cpe_id", "version_id") VALUES (158761, 'cpe:2.3:a:calderalabs:caldera_forms:1.5.0.9:*:*:*:*:wordpress:*:*', 40143, 11562873); -INSERT INTO "cpes" ("id", "cpe", "short_cpe_id", "version_id") VALUES (159553, 'cpe:2.3:a:call_project:call:3.0.0:*:*:*:*:node.js:*:*', 50021, 265074); -INSERT INTO "cpes" ("id", "cpe", "short_cpe_id", "version_id") VALUES (157218, 'cpe:2.3:a:cached_project:cached:0.15.1:*:*:*:*:rust:*:*', 54546, 19487206); -INSERT INTO "cpes" ("id", "cpe", "short_cpe_id", "version_id") VALUES (160802, 'cpe:2.3:a:cantemo:portal:2.2.1:*:*:*:*:*:*:*', 6591, 19487479); -INSERT INTO "cpes" ("id", "cpe", "short_cpe_id", "version_id") VALUES (157227, 'cpe:2.3:a:cached_project:cached:0.2.1:*:*:*:*:rust:*:*', 54546, 264557); -INSERT INTO "cpes" ("id", "cpe", "short_cpe_id", "version_id") VALUES (157075, 'cpe:2.3:a:c2fo:comb:0.2.1:*:*:*:*:node.js:*:*', 4772, 264557); -INSERT INTO "cpes" ("id", "cpe", "short_cpe_id", "version_id") VALUES (159574, 'cpe:2.3:a:cambridge_enterprise:jbig-kit:0.5:*:*:*:*:*:*:*', 32816, 19487504); -INSERT INTO "cpes" ("id", "cpe", "short_cpe_id", "version_id") VALUES (157079, 'cpe:2.3:a:c2fo:comb:0.2.5:*:*:*:*:node.js:*:*', 4772, 14851); -INSERT INTO "cpes" ("id", "cpe", "short_cpe_id", "version_id") VALUES (160857, 'cpe:2.3:a:cantemo:portal:3.2.1:*:*:*:*:*:*:*', 6591, 13152); -INSERT INTO "cpes" ("id", "cpe", "short_cpe_id", "version_id") VALUES (159772, 'cpe:2.3:a:candidate-application-form_project:candidate-application-form:1.0:*:*:*:*:wordpress:*:*', 8270, 265157); -INSERT INTO "cpes" ("id", "cpe", "short_cpe_id", "version_id") VALUES (159579, 'cpe:2.3:a:cambridge_enterprise:jbig-kit:1.0:*:*:*:*:*:*:*', 32816, 265157); -INSERT INTO "cpes" ("id", "cpe", "short_cpe_id", "version_id") VALUES (159778, 'cpe:2.3:a:candlepinproject:candlepin:0.4.27:*:*:*:*:*:*:*', 23153, 19295050); -INSERT INTO "cpes" ("id", "cpe", "short_cpe_id", "version_id") VALUES (158708, 'cpe:2.3:a:calderalabs:caldera_forms:1.1.6:*:*:*:*:wordpress:*:*', 40143, 14744); -INSERT INTO "cpes" ("id", "cpe", "short_cpe_id", "version_id") VALUES (159575, 'cpe:2.3:a:cambridge_enterprise:jbig-kit:0.6:*:*:*:*:*:*:*', 32816, 252413); -INSERT INTO "cpes" ("id", "cpe", "short_cpe_id", "version_id") VALUES (160810, 'cpe:2.3:a:cantemo:portal:2.3.11:*:*:*:*:*:*:*', 6591, 9123); -INSERT INTO "cpes" ("id", "cpe", "short_cpe_id", "version_id") VALUES (157230, 'cpe:2.3:a:cached_project:cached:0.23.0:*:*:*:*:rust:*:*', 54546, 12136986); -INSERT INTO "cpes" ("id", "cpe", "short_cpe_id", "version_id") VALUES (157096, 'cpe:2.3:a:c2fo:comb:1.2.0:*:*:*:*:node.js:*:*', 4772, 263438); -INSERT INTO "cpes" ("id", "cpe", "short_cpe_id", "version_id") VALUES (160836, 'cpe:2.3:a:cantemo:portal:3.0.13:*:*:*:*:*:*:*', 6591, 13966); -INSERT INTO "cpes" ("id", "cpe", "short_cpe_id", "version_id") VALUES (158779, 'cpe:2.3:a:calderalabs:caldera_forms:1.6.1:*:*:*:*:wordpress:*:*', 40143, 15232); -INSERT INTO "cpes" ("id", "cpe", "short_cpe_id", "version_id") VALUES (160780, 'cpe:2.3:a:cantemo:portal:1.6.1:*:*:*:*:*:*:*', 6591, 15232); -INSERT INTO "cpes" ("id", "cpe", "short_cpe_id", "version_id") VALUES (158730, 'cpe:2.3:a:calderalabs:caldera_forms:1.3.1:*:*:*:*:wordpress:*:*', 40143, 263171); -INSERT INTO "cpes" ("id", "cpe", "short_cpe_id", "version_id") VALUES (158753, 'cpe:2.3:a:calderalabs:caldera_forms:1.4.9:*:*:*:*:wordpress:*:*', 40143, 19467646); -INSERT INTO "cpes" ("id", "cpe", "short_cpe_id", "version_id") VALUES (159564, 'cpe:2.3:a:call_project:call:5.0.3:*:*:*:*:node.js:*:*', 50021, 1993); -INSERT INTO "cpes" ("id", "cpe", "short_cpe_id", "version_id") VALUES (160288, 'cpe:2.3:a:canonical:screen-resolution-extra:0.17.2:*:*:*:*:*:*:*', 20819, 19295009); -INSERT INTO "cpes" ("id", "cpe", "short_cpe_id", "version_id") VALUES (170001, 'cpe:2.3:a:canonical:screen-resolution-extra:15.0.0:*:*:*:*:*:*:*', 20819, 30001); -INSERT INTO "cpes" ("id", "cpe", "short_cpe_id", "version_id") VALUES (158700, 'cpe:2.3:a:calderalabs:caldera_forms:1.0.9:*:*:*:*:wordpress:*:*', 40143, 263333); -INSERT INTO "cpes" ("id", "cpe", "short_cpe_id", "version_id") VALUES (158715, 'cpe:2.3:a:calderalabs:caldera_forms:1.1.9.4:*:*:*:*:wordpress:*:*', 40143, 10206536); -INSERT INTO "cpes" ("id", "cpe", "short_cpe_id", "version_id") VALUES (160853, 'cpe:2.3:a:cantemo:portal:3.1.7:*:*:*:*:*:*:*', 6591, 19468627); -INSERT INTO "cpes" ("id", "cpe", "short_cpe_id", "version_id") VALUES (158699, 'cpe:2.3:a:calderalabs:caldera_forms:1.0.91:*:*:*:*:wordpress:*:*', 40143, 19258660); -INSERT INTO "cpes" ("id", "cpe", "short_cpe_id", "version_id") VALUES (159588, 'cpe:2.3:a:campaign_monitor_project:campaign_monitor:7.x-1.0:*:*:*:*:drupal:*:*', 44876, 19459307); -INSERT INTO "cpes" ("id", "cpe", "short_cpe_id", "version_id") VALUES (158769, 'cpe:2.3:a:calderalabs:caldera_forms:1.5.5:*:*:*:*:wordpress:*:*', 40143, 8660478); -INSERT INTO "cpes" ("id", "cpe", "short_cpe_id", "version_id") VALUES (160776, 'cpe:2.3:a:cantemo:portal:1.5.5:*:*:*:*:*:*:*', 6591, 8660478); -INSERT INTO "cpes" ("id", "cpe", "short_cpe_id", "version_id") VALUES (157095, 'cpe:2.3:a:c2fo:comb:1.1.0:*:*:*:*:node.js:*:*', 4772, 264339); -INSERT INTO "cpes" ("id", "cpe", "short_cpe_id", "version_id") VALUES (157208, 'cpe:2.3:a:cached-path-relative_project:cached-path-relative:1.1.0:*:*:*:*:node.js:*:*', 6930, 264339); -INSERT INTO "cpes" ("id", "cpe", "short_cpe_id", "version_id") VALUES (159781, 'cpe:2.3:a:candlepinproject:candlepin:0.6.3:*:*:*:*:*:*:*', 23153, 10907584); -INSERT INTO "cpes" ("id", "cpe", "short_cpe_id", "version_id") VALUES (157086, 'cpe:2.3:a:c2fo:comb:0.3.2:*:*:*:*:node.js:*:*', 4772, 255921); -INSERT INTO "cpes" ("id", "cpe", "short_cpe_id", "version_id") VALUES (158732, 'cpe:2.3:a:calderalabs:caldera_forms:1.3.2:*:*:*:*:wordpress:*:*', 40143, 252611); -INSERT INTO "cpes" ("id", "cpe", "short_cpe_id", "version_id") VALUES (160867, 'cpe:2.3:a:cantemo:portal:3.2.7:*:*:*:*:*:*:*', 6591, 19532454); -INSERT INTO "cpes" ("id", "cpe", "short_cpe_id", "version_id") VALUES (160200, 'cpe:2.3:a:canonical:metal_as_a_service:1.9.1:*:*:*:*:*:*:*', 54486, 19322787); \ No newline at end of file +-- Test data only. The schema comes from testSchemaDDL in pkg/models/test_schema.go; do not add DDL here. +INSERT INTO cpes (cpe, short_cpe_id, version_id) VALUES ('cpe:2.3:a:calderalabs:caldera_forms:1.5.2:*:*:*:*:wordpress:*:*', 40143, 13284); +INSERT INTO cpes (cpe, short_cpe_id, version_id) VALUES ('cpe:2.3:a:calderalabs:caldera_forms:1.0.6:*:*:*:*:wordpress:*:*', 40143, 263168); +INSERT INTO cpes (cpe, short_cpe_id, version_id) VALUES ('cpe:2.3:a:cantemo:portal:3.4.5:*:*:*:*:*:*:*', 6591, 5811416); +INSERT INTO cpes (cpe, short_cpe_id, version_id) VALUES ('cpe:2.3:a:calderalabs:caldera_forms:1.1.9:*:*:*:*:wordpress:*:*', 40143, 19500087); +INSERT INTO cpes (cpe, short_cpe_id, version_id) VALUES ('cpe:2.3:a:calderalabs:caldera_forms:1.1.9.5:*:*:*:*:wordpress:*:*', 40143, 13093993); +INSERT INTO cpes (cpe, short_cpe_id, version_id) VALUES ('cpe:2.3:a:calderalabs:caldera_forms:1.5.0.8:*:*:*:*:wordpress:*:*', 40143, 13819035); +INSERT INTO cpes (cpe, short_cpe_id, version_id) VALUES ('cpe:2.3:a:canonical:metal_as_a_service:1.9.3:*:*:*:*:*:*:*', 54486, 19501262); +INSERT INTO cpes (cpe, short_cpe_id, version_id) VALUES ('cpe:2.3:a:candlepinproject:candlepin:0.7.2:*:*:*:*:*:*:*', 23153, 14948); +INSERT INTO cpes (cpe, short_cpe_id, version_id) VALUES ('cpe:2.3:a:calderalabs:caldera_forms:1.3.5:*:*:*:*:wordpress:*:*', 40143, 13146); +INSERT INTO cpes (cpe, short_cpe_id, version_id) VALUES ('cpe:2.3:a:cantemo:portal:2.3.4:*:*:*:*:*:*:*', 6591, 252221); +INSERT INTO cpes (cpe, short_cpe_id, version_id) VALUES ('cpe:2.3:a:cached_project:cached:0.2.0:*:*:*:*:rust:*:*', 54546, 265155); +INSERT INTO cpes (cpe, short_cpe_id, version_id) VALUES ('cpe:2.3:a:cantemo:portal:3.1.1:*:*:*:*:*:*:*', 6591, 253031); +INSERT INTO cpes (cpe, short_cpe_id, version_id) VALUES ('cpe:2.3:a:cached_project:cached:0.6.2:*:*:*:*:rust:*:*', 54546, 19491698); +INSERT INTO cpes (cpe, short_cpe_id, version_id) VALUES ('cpe:2.3:a:cantemo:portal:3.0.1:*:*:*:*:*:*:*', 6591, 263095); +INSERT INTO cpes (cpe, short_cpe_id, version_id) VALUES ('cpe:2.3:a:call_project:call:3.0.1:*:*:*:*:node.js:*:*', 50021, 263095); +INSERT INTO cpes (cpe, short_cpe_id, version_id) VALUES ('cpe:2.3:a:candidate-application-form_project:candidate-application-form:1.2:*:*:*:*:wordpress:*:*', 8270, 264642); +INSERT INTO cpes (cpe, short_cpe_id, version_id) VALUES ('cpe:2.3:a:cambridge_enterprise:jbig-kit:1.2:*:*:*:*:*:*:*', 32816, 264642); +INSERT INTO cpes (cpe, short_cpe_id, version_id) VALUES ('cpe:2.3:a:calderalabs:caldera_forms:1.3.0.2:*:*:*:*:wordpress:*:*', 40143, 19462820); +INSERT INTO cpes (cpe, short_cpe_id, version_id) VALUES ('cpe:2.3:a:cantemo:portal:2.4.7:*:*:*:*:*:*:*', 6591, 8917); +INSERT INTO cpes (cpe, short_cpe_id, version_id) VALUES ('cpe:2.3:a:cantemo:portal:3.0.11:*:*:*:*:*:*:*', 6591, 13949); +INSERT INTO cpes (cpe, short_cpe_id, version_id) VALUES ('cpe:2.3:a:cantemo:portal:2.0.6:*:*:*:*:*:*:*', 6591, 19491044); +INSERT INTO cpes (cpe, short_cpe_id, version_id) VALUES ('cpe:2.3:a:cantemo:portal:3.2.8:*:*:*:*:*:*:*', 6591, 19468446); +INSERT INTO cpes (cpe, short_cpe_id, version_id) VALUES ('cpe:2.3:a:cantemo:portal:2.1.4:*:*:*:*:*:*:*', 6591, 13571); +INSERT INTO cpes (cpe, short_cpe_id, version_id) VALUES ('cpe:2.3:a:calderalabs:caldera_forms:1.5.6.2:*:*:*:*:wordpress:*:*', 40143, 14251660); +INSERT INTO cpes (cpe, short_cpe_id, version_id) VALUES ('cpe:2.3:a:calderalabs:caldera_forms:1.1.1:*:*:*:*:wordpress:*:*', 40143, 264337); +INSERT INTO cpes (cpe, short_cpe_id, version_id) VALUES ('cpe:2.3:a:calderalabs:caldera_forms:1.3.1.2:*:*:*:*:wordpress:*:*', 40143, 6703009); +INSERT INTO cpes (cpe, short_cpe_id, version_id) VALUES ('cpe:2.3:a:calderalabs:caldera_forms:1.0.8:*:*:*:*:wordpress:*:*', 40143, 251751); +INSERT INTO cpes (cpe, short_cpe_id, version_id) VALUES ('cpe:2.3:a:cantemo:portal:3.4.3:*:*:*:*:*:*:*', 6591, 19533308); +INSERT INTO cpes (cpe, short_cpe_id, version_id) VALUES ('cpe:2.3:a:c2fo:comb:0.2.7:*:*:*:*:node.js:*:*', 4772, 19487480); +INSERT INTO cpes (cpe, short_cpe_id, version_id) VALUES ('cpe:2.3:a:canonical:metal_as_a_service:1.9.4:*:*:*:*:*:*:*', 54486, 254033); +INSERT INTO cpes (cpe, short_cpe_id, version_id) VALUES ('cpe:2.3:a:call_project:call:5.0.1:*:*:*:*:node.js:*:*', 50021, 1794); +INSERT INTO cpes (cpe, short_cpe_id, version_id) VALUES ('cpe:2.3:a:cantemo:portal:3.2.13:*:*:*:*:*:*:*', 6591, 14250461); +INSERT INTO cpes (cpe, short_cpe_id, version_id) VALUES ('cpe:2.3:a:c2fo:comb:0.0.2:*:*:*:*:node.js:*:*', 4772, 264721); +INSERT INTO cpes (cpe, short_cpe_id, version_id) VALUES ('cpe:2.3:a:c2fo:comb:1.0.1:*:*:*:*:node.js:*:*', 4772, 265154); +INSERT INTO cpes (cpe, short_cpe_id, version_id) VALUES ('cpe:2.3:a:cached-path-relative_project:cached-path-relative:1.0.1:*:*:*:*:node.js:*:*', 6930, 265154); +INSERT INTO cpes (cpe, short_cpe_id, version_id) VALUES ('cpe:2.3:a:cantemo:portal:3.3.7:*:*:*:*:*:*:*', 6591, 6544148); +INSERT INTO cpes (cpe, short_cpe_id, version_id) VALUES ('cpe:2.3:a:c2fo:comb:0.3.5:*:*:*:*:node.js:*:*', 4772, 6155011); +INSERT INTO cpes (cpe, short_cpe_id, version_id) VALUES ('cpe:2.3:a:cantemo:portal:3.2.12:*:*:*:*:*:*:*', 6591, 19480103); +INSERT INTO cpes (cpe, short_cpe_id, version_id) VALUES ('cpe:2.3:a:call_project:call:1.0.0:*:*:*:*:node.js:*:*', 50021, 265153); +INSERT INTO cpes (cpe, short_cpe_id, version_id) VALUES ('cpe:2.3:a:c2fo:comb:1.0.0:*:*:*:*:node.js:*:*', 4772, 265153); +INSERT INTO cpes (cpe, short_cpe_id, version_id) VALUES ('cpe:2.3:a:cantemo:portal:2.4.5:*:*:*:*:*:*:*', 6591, 15145); +INSERT INTO cpes (cpe, short_cpe_id, version_id) VALUES ('cpe:2.3:a:cached-path-relative_project:cached-path-relative:1.0.0:*:*:*:*:node.js:*:*', 6930, 265153); +INSERT INTO cpes (cpe, short_cpe_id, version_id) VALUES ('cpe:2.3:a:cantemo:portal:2.3.2:*:*:*:*:*:*:*', 6591, 244660); +INSERT INTO cpes (cpe, short_cpe_id, version_id) VALUES ('cpe:2.3:a:cambridge_enterprise:jbig-kit:1.5:*:*:*:*:*:*:*', 32816, 13616284); +INSERT INTO cpes (cpe, short_cpe_id, version_id) VALUES ('cpe:2.3:a:candlepinproject:candlepin:0.4.11:*:*:*:*:*:*:*', 23153, 19485263); +INSERT INTO cpes (cpe, short_cpe_id, version_id) VALUES ('cpe:2.3:a:calderalabs:caldera_forms:1.3.5.3:*:*:*:*:wordpress:*:*', 40143, 10499956); +INSERT INTO cpes (cpe, short_cpe_id, version_id) VALUES ('cpe:2.3:a:cantemo:portal:3.3.2:*:*:*:*:*:*:*', 6591, 19525948); +INSERT INTO cpes (cpe, short_cpe_id, version_id) VALUES ('cpe:2.3:a:calderalabs:caldera_forms:1.1.0:*:*:*:*:wordpress:*:*', 40143, 264339); +INSERT INTO cpes (cpe, short_cpe_id, version_id) VALUES ('cpe:2.3:a:cantemo:portal:2.3.6:*:*:*:*:*:*:*', 6591, 8878); +INSERT INTO cpes (cpe, short_cpe_id, version_id) VALUES ('cpe:2.3:a:cantemo:portal:2.0.5:*:*:*:*:*:*:*', 6591, 262138); +INSERT INTO cpes (cpe, short_cpe_id, version_id) VALUES ('cpe:2.3:a:calderalabs:caldera_forms:1.1.9.3:*:*:*:*:wordpress:*:*', 40143, 13877853); +INSERT INTO cpes (cpe, short_cpe_id, version_id) VALUES ('cpe:2.3:a:calderalabs:caldera_forms:1.0.3:*:*:*:*:wordpress:*:*', 40143, 265149); +INSERT INTO cpes (cpe, short_cpe_id, version_id) VALUES ('cpe:2.3:a:calderalabs:caldera_forms:1.1.9.2:*:*:*:*:wordpress:*:*', 40143, 13934859); +INSERT INTO cpes (cpe, short_cpe_id, version_id) VALUES ('cpe:2.3:a:cached_project:cached:0.4.1:*:*:*:*:rust:*:*', 54546, 262603); +INSERT INTO cpes (cpe, short_cpe_id, version_id) VALUES ('cpe:2.3:a:c2fo:comb:0.4.1:*:*:*:*:node.js:*:*', 4772, 262603); +INSERT INTO cpes (cpe, short_cpe_id, version_id) VALUES ('cpe:2.3:a:cached_project:cached:0.4.2:*:*:*:*:rust:*:*', 54546, 247658); +INSERT INTO cpes (cpe, short_cpe_id, version_id) VALUES ('cpe:2.3:a:cached_project:cached:0.22.0:*:*:*:*:rust:*:*', 54546, 5127876); +INSERT INTO cpes (cpe, short_cpe_id, version_id) VALUES ('cpe:2.3:a:c2fo:comb:0.1.8:*:*:*:*:node.js:*:*', 4772, 15211); +INSERT INTO cpes (cpe, short_cpe_id, version_id) VALUES ('cpe:2.3:a:cantemo:portal:3.1.5:*:*:*:*:*:*:*', 6591, 9154); +INSERT INTO cpes (cpe, short_cpe_id, version_id) VALUES ('cpe:2.3:a:canonical:metal_as_a_service:1.9.5:*:*:*:*:*:*:*', 54486, 19299214); +INSERT INTO cpes (cpe, short_cpe_id, version_id) VALUES ('cpe:2.3:a:cambridge_enterprise:jbig-kit:2.1:*:*:*:*:*:*:*', 32816, 12690234); +INSERT INTO cpes (cpe, short_cpe_id, version_id) VALUES ('cpe:2.3:a:calderalabs:caldera_forms:1.5.0.5:*:*:*:*:wordpress:*:*', 40143, 1999301); +INSERT INTO cpes (cpe, short_cpe_id, version_id) VALUES ('cpe:2.3:a:calderalabs:caldera_forms:1.4.4.1:*:*:*:*:wordpress:*:*', 40143, 19478045); +INSERT INTO cpes (cpe, short_cpe_id, version_id) VALUES ('cpe:2.3:a:cantemo:portal:2.4.2:*:*:*:*:*:*:*', 6591, 251178); +INSERT INTO cpes (cpe, short_cpe_id, version_id) VALUES ('cpe:2.3:a:cantemo:portal:2.0.7:*:*:*:*:*:*:*', 6591, 257434); +INSERT INTO cpes (cpe, short_cpe_id, version_id) VALUES ('cpe:2.3:a:cantemo:portal:2.2.0:*:*:*:*:*:*:*', 6591, 251179); +INSERT INTO cpes (cpe, short_cpe_id, version_id) VALUES ('cpe:2.3:a:cantemo:portal:3.2.2:*:*:*:*:*:*:*', 6591, 14619); +INSERT INTO cpes (cpe, short_cpe_id, version_id) VALUES ('cpe:2.3:a:candlepinproject:candlepin:0.5.5:*:*:*:*:*:*:*', 23153, 19487460); +INSERT INTO cpes (cpe, short_cpe_id, version_id) VALUES ('cpe:2.3:a:cantemo:portal:3.0.12:*:*:*:*:*:*:*', 6591, 13961); +INSERT INTO cpes (cpe, short_cpe_id, version_id) VALUES ('cpe:2.3:a:c2fo:comb:0.0.6:*:*:*:*:node.js:*:*', 4772, 263449); +INSERT INTO cpes (cpe, short_cpe_id, version_id) VALUES ('cpe:2.3:a:c2fo:comb:0.1.5:*:*:*:*:node.js:*:*', 4772, 252546); +INSERT INTO cpes (cpe, short_cpe_id, version_id) VALUES ('cpe:2.3:a:canonical:ubuntu-core-launcher:1.0.27:*:*:*:*:*:*:*', 4970, 19475780); +INSERT INTO cpes (cpe, short_cpe_id, version_id) VALUES ('cpe:2.3:a:cantemo:portal:2.2.2:*:*:*:*:*:*:*', 6591, 252703); +INSERT INTO cpes (cpe, short_cpe_id, version_id) VALUES ('cpe:2.3:a:calderalabs:caldera_forms:1.1.5:*:*:*:*:wordpress:*:*', 40143, 14540); +INSERT INTO cpes (cpe, short_cpe_id, version_id) VALUES ('cpe:2.3:a:canonical:update-manager:1\:0.142.23.1:*:*:*:*:*:*:*', 11798, null); +INSERT INTO cpes (cpe, short_cpe_id, version_id) VALUES ('cpe:2.3:a:canonical:update-manager:1\:0.150:*:*:*:*:*:*:*', 11798, null); +INSERT INTO cpes (cpe, short_cpe_id, version_id) VALUES ('cpe:2.3:a:c2fo:comb:0.1.4:*:*:*:*:node.js:*:*', 4772, 15000); +INSERT INTO cpes (cpe, short_cpe_id, version_id) VALUES ('cpe:2.3:a:cantemo:portal:3.2.10:*:*:*:*:*:*:*', 6591, 19480292); +INSERT INTO cpes (cpe, short_cpe_id, version_id) VALUES ('cpe:2.3:a:calderalabs:caldera_forms:1.4.4:*:*:*:*:wordpress:*:*', 40143, 13279); +INSERT INTO cpes (cpe, short_cpe_id, version_id) VALUES ('cpe:2.3:a:c2fo:comb:0.1.10:*:*:*:*:node.js:*:*', 4772, 19487577); +INSERT INTO cpes (cpe, short_cpe_id, version_id) VALUES ('cpe:2.3:a:cantemo:portal:2.1.2:*:*:*:*:*:*:*', 6591, 263539); +INSERT INTO cpes (cpe, short_cpe_id, version_id) VALUES ('cpe:2.3:a:calderalabs:caldera_forms:1.1.9.1:*:*:*:*:wordpress:*:*', 40143, 19487278); +INSERT INTO cpes (cpe, short_cpe_id, version_id) VALUES ('cpe:2.3:a:cantemo:portal:2.1.0:*:*:*:*:*:*:*', 6591, 264251); +INSERT INTO cpes (cpe, short_cpe_id, version_id) VALUES ('cpe:2.3:a:calderalabs:caldera_forms:1.5.1:*:*:*:*:wordpress:*:*', 40143, 15231); +INSERT INTO cpes (cpe, short_cpe_id, version_id) VALUES ('cpe:2.3:a:cantemo:portal:1.5.1:*:*:*:*:*:*:*', 6591, 15231); +INSERT INTO cpes (cpe, short_cpe_id, version_id) VALUES ('cpe:2.3:a:c2fo:comb:0.0.8:*:*:*:*:node.js:*:*', 4772, 264714); +INSERT INTO cpes (cpe, short_cpe_id, version_id) VALUES ('cpe:2.3:a:cantemo:portal:3.1.4:*:*:*:*:*:*:*', 6591, 8723); +INSERT INTO cpes (cpe, short_cpe_id, version_id) VALUES ('cpe:2.3:a:c2fo:comb:0.2.11:*:*:*:*:node.js:*:*', 4772, 5482104); +INSERT INTO cpes (cpe, short_cpe_id, version_id) VALUES ('cpe:2.3:a:cached_project:cached:0.9.0:*:*:*:*:rust:*:*', 54546, 14944); +INSERT INTO cpes (cpe, short_cpe_id, version_id) VALUES ('cpe:2.3:a:cantemo:portal:2.4.10:*:*:*:*:*:*:*', 6591, 16550345); +INSERT INTO cpes (cpe, short_cpe_id, version_id) VALUES ('cpe:2.3:a:calderalabs:caldera_forms:1.3.0.1:*:*:*:*:wordpress:*:*', 40143, 19462818); +INSERT INTO cpes (cpe, short_cpe_id, version_id) VALUES ('cpe:2.3:a:cambridge_enterprise:jbig-kit:1.3:*:*:*:*:*:*:*', 32816, 264113); +INSERT INTO cpes (cpe, short_cpe_id, version_id) VALUES ('cpe:2.3:a:candidate-application-form_project:candidate-application-form:1.3:*:*:*:*:wordpress:*:*', 8270, 264113); +INSERT INTO cpes (cpe, short_cpe_id, version_id) VALUES ('cpe:2.3:a:cached_project:cached:0.8.1:*:*:*:*:rust:*:*', 54546, 249774); +INSERT INTO cpes (cpe, short_cpe_id, version_id) VALUES ('cpe:2.3:a:cantemo:portal:2.4.6:*:*:*:*:*:*:*', 6591, 19497916); +INSERT INTO cpes (cpe, short_cpe_id, version_id) VALUES ('cpe:2.3:a:cantemo:portal:2.2.3:*:*:*:*:*:*:*', 6591, 251176); +INSERT INTO cpes (cpe, short_cpe_id, version_id) VALUES ('cpe:2.3:a:calderalabs:caldera_forms:1.2.2:*:*:*:*:wordpress:*:*', 40143, 258303); +INSERT INTO cpes (cpe, short_cpe_id, version_id) VALUES ('cpe:2.3:a:cantemo:portal:3.0.6.1:*:*:*:*:*:*:*', 6591, 6357014); +INSERT INTO cpes (cpe, short_cpe_id, version_id) VALUES ('cpe:2.3:a:cantemo:portal:3.0.8:*:*:*:*:*:*:*', 6591, 13940); +INSERT INTO cpes (cpe, short_cpe_id, version_id) VALUES ('cpe:2.3:a:cantemo:portal:2.4.3:*:*:*:*:*:*:*', 6591, 15029); +INSERT INTO cpes (cpe, short_cpe_id, version_id) VALUES ('cpe:2.3:a:cantemo:portal:1.5.0:*:*:*:*:*:*:*', 6591, 264098); +INSERT INTO cpes (cpe, short_cpe_id, version_id) VALUES ('cpe:2.3:a:calderalabs:caldera_forms:1.5.0:*:*:*:*:wordpress:*:*', 40143, 264098); +INSERT INTO cpes (cpe, short_cpe_id, version_id) VALUES ('cpe:2.3:a:cantemo:portal:1.5.2:*:*:*:*:*:*:*', 6591, 13284); +INSERT INTO cpes (cpe, short_cpe_id, version_id) VALUES ('cpe:2.3:a:cached_project:cached:0.14.0:*:*:*:*:rust:*:*', 54546, 7405670); +INSERT INTO cpes (cpe, short_cpe_id, version_id) VALUES ('cpe:2.3:a:calderalabs:caldera_forms:1.2.0:*:*:*:*:wordpress:*:*', 40143, 263438); +INSERT INTO cpes (cpe, short_cpe_id, version_id) VALUES ('cpe:2.3:a:cantemo:portal:3.0.5:*:*:*:*:*:*:*', 6591, 15003); +INSERT INTO cpes (cpe, short_cpe_id, version_id) VALUES ('cpe:2.3:a:calderalabs:caldera_forms:1.4.8:*:*:*:*:wordpress:*:*', 40143, 7083951); +INSERT INTO cpes (cpe, short_cpe_id, version_id) VALUES ('cpe:2.3:a:calderalabs:caldera_forms:1.3.2.1:*:*:*:*:wordpress:*:*', 40143, 19491331); +INSERT INTO cpes (cpe, short_cpe_id, version_id) VALUES ('cpe:2.3:a:cantemo:portal:3.4.8:*:*:*:*:*:*:*', 6591, 9540297); +INSERT INTO cpes (cpe, short_cpe_id, version_id) VALUES ('cpe:2.3:a:cantemo:portal:2.2.4:*:*:*:*:*:*:*', 6591, 14621); +INSERT INTO cpes (cpe, short_cpe_id, version_id) VALUES ('cpe:2.3:a:canonical:selinux:1\:0.10:*:*:*:*:*:*:*', 48168, null); +INSERT INTO cpes (cpe, short_cpe_id, version_id) VALUES ('cpe:2.3:a:calderalabs:caldera_forms:1.1.9.10:*:*:*:*:wordpress:*:*', 40143, 13117909); +INSERT INTO cpes (cpe, short_cpe_id, version_id) VALUES ('cpe:2.3:a:cantemo:portal:3.2.11:*:*:*:*:*:*:*', 6591, 12192601); +INSERT INTO cpes (cpe, short_cpe_id, version_id) VALUES ('cpe:2.3:a:calderalabs:caldera_forms:1.1.4:*:*:*:*:wordpress:*:*', 40143, 19490036); +INSERT INTO cpes (cpe, short_cpe_id, version_id) VALUES ('cpe:2.3:a:cantemo:portal:1.4.0:*:*:*:*:*:*:*', 6591, 260652); +INSERT INTO cpes (cpe, short_cpe_id, version_id) VALUES ('cpe:2.3:a:calderalabs:caldera_forms:1.4.0:*:*:*:*:wordpress:*:*', 40143, 260652); +INSERT INTO cpes (cpe, short_cpe_id, version_id) VALUES ('cpe:2.3:a:canonical:checkinstall:1.6.2:*:*:*:*:*:*:*', 17559, 261941); +INSERT INTO cpes (cpe, short_cpe_id, version_id) VALUES ('cpe:2.3:a:calderalabs:caldera_forms:1.6.2:*:*:*:*:wordpress:*:*', 40143, 261941); +INSERT INTO cpes (cpe, short_cpe_id, version_id) VALUES ('cpe:2.3:a:cantemo:portal:1.6.2:*:*:*:*:*:*:*', 6591, 261941); +INSERT INTO cpes (cpe, short_cpe_id, version_id) VALUES ('cpe:2.3:a:cantemo:portal:3.0.9:*:*:*:*:*:*:*', 6591, 13904); +INSERT INTO cpes (cpe, short_cpe_id, version_id) VALUES ('cpe:2.3:a:c2fo:comb:0.2.0:*:*:*:*:node.js:*:*', 4772, 265155); +INSERT INTO cpes (cpe, short_cpe_id, version_id) VALUES ('cpe:2.3:a:cantemo:portal:2.4.0:*:*:*:*:*:*:*', 6591, 251181); +INSERT INTO cpes (cpe, short_cpe_id, version_id) VALUES ('cpe:2.3:a:cached_project:cached:0.2.3:*:*:*:*:rust:*:*', 54546, 253139); +INSERT INTO cpes (cpe, short_cpe_id, version_id) VALUES ('cpe:2.3:a:cantemo:portal:2.3.0:*:*:*:*:*:*:*', 6591, 257513); +INSERT INTO cpes (cpe, short_cpe_id, version_id) VALUES ('cpe:2.3:a:calderalabs:caldera_forms:1.0.5:*:*:*:*:wordpress:*:*', 40143, 264114); +INSERT INTO cpes (cpe, short_cpe_id, version_id) VALUES ('cpe:2.3:a:cantemo:portal:2.2.5:*:*:*:*:*:*:*', 6591, 254832); +INSERT INTO cpes (cpe, short_cpe_id, version_id) VALUES ('cpe:2.3:a:c2fo:comb:0.3.6:*:*:*:*:node.js:*:*', 4772, 6138488); +INSERT INTO cpes (cpe, short_cpe_id, version_id) VALUES ('cpe:2.3:a:cantemo:portal:3.4.0:*:*:*:*:*:*:*', 6591, 243167); +INSERT INTO cpes (cpe, short_cpe_id, version_id) VALUES ('cpe:2.3:a:candlepinproject:candlepin:0.4.5:*:*:*:*:*:*:*', 23153, 12797296); +INSERT INTO cpes (cpe, short_cpe_id, version_id) VALUES ('cpe:2.3:a:cantemo:portal:3.4.9:*:*:*:*:*:*:*', 6591, 19481914); +INSERT INTO cpes (cpe, short_cpe_id, version_id) VALUES ('cpe:2.3:a:calderalabs:caldera_forms:1.3.5.2:*:*:*:*:wordpress:*:*', 40143, 17151752); +INSERT INTO cpes (cpe, short_cpe_id, version_id) VALUES ('cpe:2.3:a:cantemo:portal:3.3.3:*:*:*:*:*:*:*', 6591, 19508585); +INSERT INTO cpes (cpe, short_cpe_id, version_id) VALUES ('cpe:2.3:a:calendarscripts:konnichiwa:0.8.3:*:*:*:*:wordpress:*:*', 31044, 5670099); +INSERT INTO cpes (cpe, short_cpe_id, version_id) VALUES ('cpe:2.3:a:c2fo:comb:0.0.5:*:*:*:*:node.js:*:*', 4772, 14796); +INSERT INTO cpes (cpe, short_cpe_id, version_id) VALUES ('cpe:2.3:a:cantemo:portal:4.0.0:*:*:*:*:*:*:*', 6591, 252612); +INSERT INTO cpes (cpe, short_cpe_id, version_id) VALUES ('cpe:2.3:a:call_project:call:4.0.0:*:*:*:*:node.js:*:*', 50021, 252612); +INSERT INTO cpes (cpe, short_cpe_id, version_id) VALUES ('cpe:2.3:a:call_project:call:3.0.3:*:*:*:*:node.js:*:*', 50021, 1394); +INSERT INTO cpes (cpe, short_cpe_id, version_id) VALUES ('cpe:2.3:a:cantemo:portal:3.0.3:*:*:*:*:*:*:*', 6591, 1394); +INSERT INTO cpes (cpe, short_cpe_id, version_id) VALUES ('cpe:2.3:a:cantemo:portal:3.3.4:*:*:*:*:*:*:*', 6591, 15028); +INSERT INTO cpes (cpe, short_cpe_id, version_id) VALUES ('cpe:2.3:a:calderalabs:caldera_forms:1.4.5.1:*:*:*:*:wordpress:*:*', 40143, 9909761); +INSERT INTO cpes (cpe, short_cpe_id, version_id) VALUES ('cpe:2.3:a:c2fo:comb:0.4.0:*:*:*:*:node.js:*:*', 4772, 249755); +INSERT INTO cpes (cpe, short_cpe_id, version_id) VALUES ('cpe:2.3:a:cantemo:portal:1.6.5:*:*:*:*:*:*:*', 6591, 19541079); +INSERT INTO cpes (cpe, short_cpe_id, version_id) VALUES ('cpe:2.3:a:calderalabs:caldera_forms:1.3.3.1:*:*:*:*:wordpress:*:*', 40143, 19469911); +INSERT INTO cpes (cpe, short_cpe_id, version_id) VALUES ('cpe:2.3:a:cantemo:portal:2.1.6:*:*:*:*:*:*:*', 6591, 250722); +INSERT INTO cpes (cpe, short_cpe_id, version_id) VALUES ('cpe:2.3:a:cambridge_enterprise:jbig-kit:1.6:*:*:*:*:*:*:*', 32816, 19532572); +INSERT INTO cpes (cpe, short_cpe_id, version_id) VALUES ('cpe:2.3:a:cached_project:cached:0.21.0:*:*:*:*:rust:*:*', 54546, 5128616); +INSERT INTO cpes (cpe, short_cpe_id, version_id) VALUES ('cpe:2.3:a:calderalabs:caldera_forms:1.1.9.9:*:*:*:*:wordpress:*:*', 40143, 8912914); +INSERT INTO cpes (cpe, short_cpe_id, version_id) VALUES ('cpe:2.3:a:call_project:call:5.0.2:*:*:*:*:node.js:*:*', 50021, 15193); +INSERT INTO cpes (cpe, short_cpe_id, version_id) VALUES ('cpe:2.3:a:cantemo:portal:2.3.1:*:*:*:*:*:*:*', 6591, 264996); +INSERT INTO cpes (cpe, short_cpe_id, version_id) VALUES ('cpe:2.3:a:cached_project:cached:0.17.0:*:*:*:*:rust:*:*', 54546, 6895007); +INSERT INTO cpes (cpe, short_cpe_id, version_id) VALUES ('cpe:2.3:a:c2fo:comb:0.2.9:*:*:*:*:node.js:*:*', 4772, 19487481); +INSERT INTO cpes (cpe, short_cpe_id, version_id) VALUES ('cpe:2.3:a:canonical:metal_as_a_service:1.9.0:alpha4:*:*:*:*:*:*', 54486, 215573); +INSERT INTO cpes (cpe, short_cpe_id, version_id) VALUES ('cpe:2.3:a:cantemo:portal:3.1.3:*:*:*:*:*:*:*', 6591, 9113); +INSERT INTO cpes (cpe, short_cpe_id, version_id) VALUES ('cpe:2.3:a:calderalabs:caldera_forms:1.3.5.1:*:*:*:*:wordpress:*:*', 40143, 19532557); +INSERT INTO cpes (cpe, short_cpe_id, version_id) VALUES ('cpe:2.3:a:calderalabs:caldera_forms:1.4.2:*:*:*:*:wordpress:*:*', 40143, 257682); +INSERT INTO cpes (cpe, short_cpe_id, version_id) VALUES ('cpe:2.3:a:cantemo:portal:1.6.6:*:*:*:*:*:*:*', 6591, 5617453); +INSERT INTO cpes (cpe, short_cpe_id, version_id) VALUES ('cpe:2.3:a:c2fo:comb:0.2.8:*:*:*:*:node.js:*:*', 4772, 19487482); +INSERT INTO cpes (cpe, short_cpe_id, version_id) VALUES ('cpe:2.3:a:calderalabs:caldera_forms:1.4.5:*:*:*:*:wordpress:*:*', 40143, 7892814); +INSERT INTO cpes (cpe, short_cpe_id, version_id) VALUES ('cpe:2.3:a:cached_project:cached:0.10.0:*:*:*:*:rust:*:*', 54546, 249772); +INSERT INTO cpes (cpe, short_cpe_id, version_id) VALUES ('cpe:2.3:a:calderalabs:caldera_forms:1.2.1:*:*:*:*:wordpress:*:*', 40143, 264897); +INSERT INTO cpes (cpe, short_cpe_id, version_id) VALUES ('cpe:2.3:a:calderalabs:caldera_forms:1.3.0:*:*:*:*:wordpress:*:*', 40143, 264338); +INSERT INTO cpes (cpe, short_cpe_id, version_id) VALUES ('cpe:2.3:a:calderalabs:caldera_forms:1.5.3.1:*:*:*:*:wordpress:*:*', 40143, 19462971); +INSERT INTO cpes (cpe, short_cpe_id, version_id) VALUES ('cpe:2.3:a:cached_project:cached:0.3.1:*:*:*:*:rust:*:*', 54546, 252261); +INSERT INTO cpes (cpe, short_cpe_id, version_id) VALUES ('cpe:2.3:a:c2fo:comb:0.3.1:*:*:*:*:node.js:*:*', 4772, 252261); +INSERT INTO cpes (cpe, short_cpe_id, version_id) VALUES ('cpe:2.3:a:c2fo:comb:0.0.4:*:*:*:*:node.js:*:*', 4772, 252547); +INSERT INTO cpes (cpe, short_cpe_id, version_id) VALUES ('cpe:2.3:a:calderalabs:caldera_forms:1.1.2:*:*:*:*:wordpress:*:*', 40143, 22072); +INSERT INTO cpes (cpe, short_cpe_id, version_id) VALUES ('cpe:2.3:a:cantemo:portal:2.0.4:*:*:*:*:*:*:*', 6591, 2683); +INSERT INTO cpes (cpe, short_cpe_id, version_id) VALUES ('cpe:2.3:a:call_project:call:3.0.4:*:*:*:*:node.js:*:*', 50021, 252066); +INSERT INTO cpes (cpe, short_cpe_id, version_id) VALUES ('cpe:2.3:a:capstone-engine:capstone:3.0.4:*:*:*:*:*:*:*', 8296, 252066); +INSERT INTO cpes (cpe, short_cpe_id, version_id) VALUES ('cpe:2.3:a:cantemo:portal:3.0.4:*:*:*:*:*:*:*', 6591, 252066); +INSERT INTO cpes (cpe, short_cpe_id, version_id) VALUES ('cpe:2.3:a:c2fo:comb:0.3.4:*:*:*:*:node.js:*:*', 4772, 252638); +INSERT INTO cpes (cpe, short_cpe_id, version_id) VALUES ('cpe:2.3:a:calderalabs:caldera_forms:1.1.3:*:*:*:*:wordpress:*:*', 40143, 249058); +INSERT INTO cpes (cpe, short_cpe_id, version_id) VALUES ('cpe:2.3:a:c2fo:comb:0.2.10:*:*:*:*:node.js:*:*', 4772, 11466378); +INSERT INTO cpes (cpe, short_cpe_id, version_id) VALUES ('cpe:2.3:a:cantemo:portal:3.0.7:*:*:*:*:*:*:*', 6591, 13967); +INSERT INTO cpes (cpe, short_cpe_id, version_id) VALUES ('cpe:2.3:a:cantemo:portal:3.3.0:*:*:*:*:*:*:*', 6591, 15264); +INSERT INTO cpes (cpe, short_cpe_id, version_id) VALUES ('cpe:2.3:a:cantemo:portal:3.0.10:*:*:*:*:*:*:*', 6591, 13943); +INSERT INTO cpes (cpe, short_cpe_id, version_id) VALUES ('cpe:2.3:a:cantemo:portal:3.4.7:*:*:*:*:*:*:*', 6591, 8873); +INSERT INTO cpes (cpe, short_cpe_id, version_id) VALUES ('cpe:2.3:a:calderalabs:caldera_forms:1.2.3:*:*:*:*:wordpress:*:*', 40143, 247848); +INSERT INTO cpes (cpe, short_cpe_id, version_id) VALUES ('cpe:2.3:a:c2fo:comb:0.0.3:*:*:*:*:node.js:*:*', 4772, 264643); +INSERT INTO cpes (cpe, short_cpe_id, version_id) VALUES ('cpe:2.3:a:calderalabs:caldera_forms:1.5.7.1:*:*:*:*:wordpress:*:*', 40143, 19469924); +INSERT INTO cpes (cpe, short_cpe_id, version_id) VALUES ('cpe:2.3:a:c2fo:comb:0.1.9:*:*:*:*:node.js:*:*', 4772, 233375); +INSERT INTO cpes (cpe, short_cpe_id, version_id) VALUES ('cpe:2.3:a:call_project:call:2.0.2:*:*:*:*:node.js:*:*', 50021, 262155); +INSERT INTO cpes (cpe, short_cpe_id, version_id) VALUES ('cpe:2.3:a:cantemo:portal:2.0.2:*:*:*:*:*:*:*', 6591, 262155); +INSERT INTO cpes (cpe, short_cpe_id, version_id) VALUES ('cpe:2.3:a:cantemo:portal:2.1.3:*:*:*:*:*:*:*', 6591, 252640); +INSERT INTO cpes (cpe, short_cpe_id, version_id) VALUES ('cpe:2.3:a:cantemo:portal:3.2.3:*:*:*:*:*:*:*', 6591, 249253); +INSERT INTO cpes (cpe, short_cpe_id, version_id) VALUES ('cpe:2.3:a:cambridge_enterprise:jbig-kit:1.4:*:*:*:*:*:*:*', 32816, 19487001); +INSERT INTO cpes (cpe, short_cpe_id, version_id) VALUES ('cpe:2.3:a:calderalabs:caldera_forms:1.3.3:*:*:*:*:wordpress:*:*', 40143, 11418); +INSERT INTO cpes (cpe, short_cpe_id, version_id) VALUES ('cpe:2.3:a:cached_project:cached:0.6.1:*:*:*:*:rust:*:*', 54546, 256416); +INSERT INTO cpes (cpe, short_cpe_id, version_id) VALUES ('cpe:2.3:a:candidate-application-form_project:candidate-application-form:1.1:*:*:*:*:wordpress:*:*', 8270, 263265); +INSERT INTO cpes (cpe, short_cpe_id, version_id) VALUES ('cpe:2.3:a:calderalabs:caldera_forms:1.4.6:*:*:*:*:wordpress:*:*', 40143, 13517); +INSERT INTO cpes (cpe, short_cpe_id, version_id) VALUES ('cpe:2.3:a:cantemo:portal:3.0.2:*:*:*:*:*:*:*', 6591, 19491083); +INSERT INTO cpes (cpe, short_cpe_id, version_id) VALUES ('cpe:2.3:a:calderalabs:caldera_forms:1.5.3:*:*:*:*:wordpress:*:*', 40143, 10817733); +INSERT INTO cpes (cpe, short_cpe_id, version_id) VALUES ('cpe:2.3:a:calderalabs:caldera_forms:1.5.6:*:*:*:*:wordpress:*:*', 40143, 19291862); +INSERT INTO cpes (cpe, short_cpe_id, version_id) VALUES ('cpe:2.3:a:cantemo:portal:1.5.6:*:*:*:*:*:*:*', 6591, 19291862); +INSERT INTO cpes (cpe, short_cpe_id, version_id) VALUES ('cpe:2.3:a:cantemo:portal:3.4.2:*:*:*:*:*:*:*', 6591, 1365); +INSERT INTO cpes (cpe, short_cpe_id, version_id) VALUES ('cpe:2.3:a:calderalabs:caldera_forms:1.5.0.10:*:*:*:*:wordpress:*:*', 40143, 10429338); +INSERT INTO cpes (cpe, short_cpe_id, version_id) VALUES ('cpe:2.3:a:cached_project:cached:0.7.0:*:*:*:*:rust:*:*', 54546, 264249); +INSERT INTO cpes (cpe, short_cpe_id, version_id) VALUES ('cpe:2.3:a:cambridge_enterprise:jbig-kit:0.8:*:*:*:*:*:*:*', 32816, 244764); +INSERT INTO cpes (cpe, short_cpe_id, version_id) VALUES ('cpe:2.3:a:calderalabs:caldera_forms:1.6.1.1:*:*:*:*:wordpress:*:*', 40143, 19490475); +INSERT INTO cpes (cpe, short_cpe_id, version_id) VALUES ('cpe:2.3:a:cantemo:portal:1.6.0:*:*:*:*:*:*:*', 6591, 263437); +INSERT INTO cpes (cpe, short_cpe_id, version_id) VALUES ('cpe:2.3:a:calderalabs:caldera_forms:1.6.0:*:*:*:*:wordpress:*:*', 40143, 263437); +INSERT INTO cpes (cpe, short_cpe_id, version_id) VALUES ('cpe:2.3:a:cached_project:cached:0.5.0:*:*:*:*:rust:*:*', 54546, 252454); +INSERT INTO cpes (cpe, short_cpe_id, version_id) VALUES ('cpe:2.3:a:c2fo:comb:0.2.3:*:*:*:*:node.js:*:*', 4772, 253139); +INSERT INTO cpes (cpe, short_cpe_id, version_id) VALUES ('cpe:2.3:a:cantemo:portal:3.1.0:*:*:*:*:*:*:*', 6591, 262607); +INSERT INTO cpes (cpe, short_cpe_id, version_id) VALUES ('cpe:2.3:a:cambridge_enterprise:jbig-kit:1.1:*:*:*:*:*:*:*', 32816, 263265); +INSERT INTO cpes (cpe, short_cpe_id, version_id) VALUES ('cpe:2.3:a:call_project:call:3.0.2:*:*:*:*:node.js:*:*', 50021, 19491083); +INSERT INTO cpes (cpe, short_cpe_id, version_id) VALUES ('cpe:2.3:a:c2fo:comb:0.2.4:*:*:*:*:node.js:*:*', 4772, 15235); +INSERT INTO cpes (cpe, short_cpe_id, version_id) VALUES ('cpe:2.3:a:cached_project:cached:0.2.4:*:*:*:*:rust:*:*', 54546, 15235); +INSERT INTO cpes (cpe, short_cpe_id, version_id) VALUES ('cpe:2.3:a:cantemo:portal:3.3.6:*:*:*:*:*:*:*', 6591, 9111); +INSERT INTO cpes (cpe, short_cpe_id, version_id) VALUES ('cpe:2.3:a:cambridge_enterprise:jbig-kit:0.7:*:*:*:*:*:*:*', 32816, 5835723); +INSERT INTO cpes (cpe, short_cpe_id, version_id) VALUES ('cpe:2.3:a:cantemo:portal:2.3.10:*:*:*:*:*:*:*', 6591, 19324110); +INSERT INTO cpes (cpe, short_cpe_id, version_id) VALUES ('cpe:2.3:a:cantemo:portal:2.3.8:*:*:*:*:*:*:*', 6591, 8720); +INSERT INTO cpes (cpe, short_cpe_id, version_id) VALUES ('cpe:2.3:a:c2fo:comb:0.3.3:*:*:*:*:node.js:*:*', 4772, 19487573); +INSERT INTO cpes (cpe, short_cpe_id, version_id) VALUES ('cpe:2.3:a:cantemo:portal:2.4.9:*:*:*:*:*:*:*', 6591, 19518492); +INSERT INTO cpes (cpe, short_cpe_id, version_id) VALUES ('cpe:2.3:a:calderalabs:caldera_forms:1.5.0.1-3:*:*:*:*:wordpress:*:*', 40143, 13695671); +INSERT INTO cpes (cpe, short_cpe_id, version_id) VALUES ('cpe:2.3:a:cantemo:portal:3.2.9:*:*:*:*:*:*:*', 6591, 19480553); +INSERT INTO cpes (cpe, short_cpe_id, version_id) VALUES ('cpe:2.3:a:calderalabs:caldera_forms:1.5.9:*:*:*:*:wordpress:*:*', 40143, 19460749); +INSERT INTO cpes (cpe, short_cpe_id, version_id) VALUES ('cpe:2.3:a:cantemo:portal:1.5.3:*:*:*:*:*:*:*', 6591, 10817733); +INSERT INTO cpes (cpe, short_cpe_id, version_id) VALUES ('cpe:2.3:a:canonical:update-manager:1\:0.87.31.1:*:*:*:*:*:*:*', 11798, null); +INSERT INTO cpes (cpe, short_cpe_id, version_id) VALUES ('cpe:2.3:a:cached_project:cached:0.6.0:*:*:*:*:rust:*:*', 54546, 248486); +INSERT INTO cpes (cpe, short_cpe_id, version_id) VALUES ('cpe:2.3:a:cambridge_enterprise:jbig-kit:2.0:*:*:*:*:*:*:*', 32816, 19494556); +INSERT INTO cpes (cpe, short_cpe_id, version_id) VALUES ('cpe:2.3:a:calderalabs:caldera_forms:1.0.0:*:*:*:*:wordpress:*:*', 40143, 265153); +INSERT INTO cpes (cpe, short_cpe_id, version_id) VALUES ('cpe:2.3:a:canonical:ubuntu_download_manager:-:*:*:*:*:*:*:*', 48783, 19513403); +INSERT INTO cpes (cpe, short_cpe_id, version_id) VALUES ('cpe:2.3:a:candlepinproject:candlepin:-:*:*:*:*:*:*:*', 23153, 19513403); +INSERT INTO cpes (cpe, short_cpe_id, version_id) VALUES ('cpe:2.3:a:cantemo:portal:2.3.3:*:*:*:*:*:*:*', 6591, 252815); +INSERT INTO cpes (cpe, short_cpe_id, version_id) VALUES ('cpe:2.3:a:calderalabs:caldera_forms:1.5.0.4:*:*:*:*:wordpress:*:*', 40143, 10522622); +INSERT INTO cpes (cpe, short_cpe_id, version_id) VALUES ('cpe:2.3:a:cantemo:portal:3.1.2:*:*:*:*:*:*:*', 6591, 13150); +INSERT INTO cpes (cpe, short_cpe_id, version_id) VALUES ('cpe:2.3:a:cantemo:portal:2.3.7:*:*:*:*:*:*:*', 6591, 17890); +INSERT INTO cpes (cpe, short_cpe_id, version_id) VALUES ('cpe:2.3:a:cantemo:portal:2.3.12:*:*:*:*:*:*:*', 6591, 11647042); +INSERT INTO cpes (cpe, short_cpe_id, version_id) VALUES ('cpe:2.3:a:calderalabs:caldera_forms:1.1.9.7:*:*:*:*:wordpress:*:*', 40143, 19478693); +INSERT INTO cpes (cpe, short_cpe_id, version_id) VALUES ('cpe:2.3:a:cantemo:portal:3.1.8:*:*:*:*:*:*:*', 6591, 19468629); +INSERT INTO cpes (cpe, short_cpe_id, version_id) VALUES ('cpe:2.3:a:cantemo:portal:1.5.4:*:*:*:*:*:*:*', 6591, 14946); +INSERT INTO cpes (cpe, short_cpe_id, version_id) VALUES ('cpe:2.3:a:cantemo:portal:2.4.8:*:*:*:*:*:*:*', 6591, 19323850); +INSERT INTO cpes (cpe, short_cpe_id, version_id) VALUES ('cpe:2.3:a:calderalabs:caldera_forms:1.4.3:*:*:*:*:wordpress:*:*', 40143, 256715); +INSERT INTO cpes (cpe, short_cpe_id, version_id) VALUES ('cpe:2.3:a:calderalabs:caldera_forms:1.5.4:*:*:*:*:wordpress:*:*', 40143, 14946); +INSERT INTO cpes (cpe, short_cpe_id, version_id) VALUES ('cpe:2.3:a:calderalabs:caldera_forms:1.3.4.2:*:*:*:*:wordpress:*:*', 40143, 6277397); +INSERT INTO cpes (cpe, short_cpe_id, version_id) VALUES ('cpe:2.3:a:cached_project:cached:0.1.0:*:*:*:*:rust:*:*', 54546, 265156); +INSERT INTO cpes (cpe, short_cpe_id, version_id) VALUES ('cpe:2.3:a:c2fo:comb:0.1.0:*:*:*:*:node.js:*:*', 4772, 265156); +INSERT INTO cpes (cpe, short_cpe_id, version_id) VALUES ('cpe:2.3:a:call_project:call:2.0.1:*:*:*:*:node.js:*:*', 50021, 265075); +INSERT INTO cpes (cpe, short_cpe_id, version_id) VALUES ('cpe:2.3:a:cantemo:portal:2.0.1:*:*:*:*:*:*:*', 6591, 265075); +INSERT INTO cpes (cpe, short_cpe_id, version_id) VALUES ('cpe:2.3:a:canonical:lxd:2.0.1:*:*:*:*:*:*:*', 36858, 265075); +INSERT INTO cpes (cpe, short_cpe_id, version_id) VALUES ('cpe:2.3:a:cantemo:portal:3.2.4:*:*:*:*:*:*:*', 6591, 19500948); +INSERT INTO cpes (cpe, short_cpe_id, version_id) VALUES ('cpe:2.3:a:c2fo:comb:0.1.6:*:*:*:*:node.js:*:*', 4772, 14867); +INSERT INTO cpes (cpe, short_cpe_id, version_id) VALUES ('cpe:2.3:a:calderalabs:caldera_forms:1.1.7:*:*:*:*:wordpress:*:*', 40143, 252657); +INSERT INTO cpes (cpe, short_cpe_id, version_id) VALUES ('cpe:2.3:a:cantemo:portal:3.3.8:*:*:*:*:*:*:*', 6591, 14268199); +INSERT INTO cpes (cpe, short_cpe_id, version_id) VALUES ('cpe:2.3:a:calderalabs:caldera_forms:1.5.8:*:*:*:*:wordpress:*:*', 40143, 10371); +INSERT INTO cpes (cpe, short_cpe_id, version_id) VALUES ('cpe:2.3:a:cantemo:portal:1.5.7:*:*:*:*:*:*:*', 6591, 19531474); +INSERT INTO cpes (cpe, short_cpe_id, version_id) VALUES ('cpe:2.3:a:c2fo:comb:0.1.7:*:*:*:*:node.js:*:*', 4772, 15188); +INSERT INTO cpes (cpe, short_cpe_id, version_id) VALUES ('cpe:2.3:a:calderalabs:caldera_forms:1.5.7:*:*:*:*:wordpress:*:*', 40143, 19531474); +INSERT INTO cpes (cpe, short_cpe_id, version_id) VALUES ('cpe:2.3:a:c2fo:comb:0.1.3:*:*:*:*:node.js:*:*', 4772, 250884); +INSERT INTO cpes (cpe, short_cpe_id, version_id) VALUES ('cpe:2.3:a:calderalabs:caldera_forms:1.1.9.6:*:*:*:*:wordpress:*:*', 40143, 8474638); +INSERT INTO cpes (cpe, short_cpe_id, version_id) VALUES ('cpe:2.3:a:calmquist.static-server_project:calmquist.static-server:0.1.1:*:*:*:*:node.js:*:*', 24723, 265151); +INSERT INTO cpes (cpe, short_cpe_id, version_id) VALUES ('cpe:2.3:a:c2fo:comb:0.1.1:*:*:*:*:node.js:*:*', 4772, 265151); +INSERT INTO cpes (cpe, short_cpe_id, version_id) VALUES ('cpe:2.3:a:cached_project:cached:0.2.2:*:*:*:*:rust:*:*', 54546, 263698); +INSERT INTO cpes (cpe, short_cpe_id, version_id) VALUES ('cpe:2.3:a:c2fo:comb:0.2.2:*:*:*:*:node.js:*:*', 4772, 263698); +INSERT INTO cpes (cpe, short_cpe_id, version_id) VALUES ('cpe:2.3:a:cantemo:portal:2.0.3:*:*:*:*:*:*:*', 6591, 263699); +INSERT INTO cpes (cpe, short_cpe_id, version_id) VALUES ('cpe:2.3:a:cached_project:cached:0.8.0:*:*:*:*:rust:*:*', 54546, 15081); +INSERT INTO cpes (cpe, short_cpe_id, version_id) VALUES ('cpe:2.3:a:cantemo:portal:3.4.4:*:*:*:*:*:*:*', 6591, 12448282); +INSERT INTO cpes (cpe, short_cpe_id, version_id) VALUES ('cpe:2.3:a:cached_project:cached:0.15.0:*:*:*:*:rust:*:*', 54546, 15050); +INSERT INTO cpes (cpe, short_cpe_id, version_id) VALUES ('cpe:2.3:a:cantemo:portal:2.0.0:*:*:*:*:*:*:*', 6591, 265076); +INSERT INTO cpes (cpe, short_cpe_id, version_id) VALUES ('cpe:2.3:a:call_project:call:2.0.0:*:*:*:*:node.js:*:*', 50021, 265076); +INSERT INTO cpes (cpe, short_cpe_id, version_id) VALUES ('cpe:2.3:a:c2fo:comb:2.0.0:*:*:*:*:node.js:*:*', 4772, 265076); +INSERT INTO cpes (cpe, short_cpe_id, version_id) VALUES ('cpe:2.3:a:c2fo:comb:0.2.6:*:*:*:*:node.js:*:*', 4772, 6140300); +INSERT INTO cpes (cpe, short_cpe_id, version_id) VALUES ('cpe:2.3:a:cantemo:portal:3.2.6:*:*:*:*:*:*:*', 6591, 8889); +INSERT INTO cpes (cpe, short_cpe_id, version_id) VALUES ('cpe:2.3:a:cantemo:portal:3.3.1:*:*:*:*:*:*:*', 6591, 237532); +INSERT INTO cpes (cpe, short_cpe_id, version_id) VALUES ('cpe:2.3:a:cached_project:cached:0.13.1:*:*:*:*:rust:*:*', 54546, 264231); +INSERT INTO cpes (cpe, short_cpe_id, version_id) VALUES ('cpe:2.3:a:cached_project:cached:0.18.0:*:*:*:*:rust:*:*', 54546, 11098064); +INSERT INTO cpes (cpe, short_cpe_id, version_id) VALUES ('cpe:2.3:a:c97:cart_engine:3.0:*:*:*:*:*:*:*', 40676, 1795); +INSERT INTO cpes (cpe, short_cpe_id, version_id) VALUES ('cpe:2.3:a:cambridge_enterprise:jbig-kit:0.9:*:*:*:*:*:*:*', 32816, 19487340); +INSERT INTO cpes (cpe, short_cpe_id, version_id) VALUES ('cpe:2.3:a:cantemo:portal:2.1.1:*:*:*:*:*:*:*', 6591, 263266); +INSERT INTO cpes (cpe, short_cpe_id, version_id) VALUES ('cpe:2.3:a:cantemo:portal:3.3.5:*:*:*:*:*:*:*', 6591, 15302); +INSERT INTO cpes (cpe, short_cpe_id, version_id) VALUES ('cpe:2.3:a:cantemo:portal:2.3.5:*:*:*:*:*:*:*', 6591, 8918); +INSERT INTO cpes (cpe, short_cpe_id, version_id) VALUES ('cpe:2.3:a:cantemo:portal:3.2.0:*:*:*:*:*:*:*', 6591, 2025); +INSERT INTO cpes (cpe, short_cpe_id, version_id) VALUES ('cpe:2.3:a:cached_project:cached:0.3.0:*:*:*:*:rust:*:*', 54546, 252814); +INSERT INTO cpes (cpe, short_cpe_id, version_id) VALUES ('cpe:2.3:a:c2fo:comb:0.3.0:*:*:*:*:node.js:*:*', 4772, 252814); +INSERT INTO cpes (cpe, short_cpe_id, version_id) VALUES ('cpe:2.3:a:calderalabs:caldera_forms:1.5.6.1:*:*:*:*:wordpress:*:*', 40143, 13917822); +INSERT INTO cpes (cpe, short_cpe_id, version_id) VALUES ('cpe:2.3:a:calderalabs:caldera_forms:1.1.8:*:*:*:*:wordpress:*:*', 40143, 252983); +INSERT INTO cpes (cpe, short_cpe_id, version_id) VALUES ('cpe:2.3:a:calderalabs:caldera_forms:1.5.2.1:*:*:*:*:wordpress:*:*', 40143, 19465563); +INSERT INTO cpes (cpe, short_cpe_id, version_id) VALUES ('cpe:2.3:a:cantemo:portal:1.6.3:*:*:*:*:*:*:*', 6591, 19486979); +INSERT INTO cpes (cpe, short_cpe_id, version_id) VALUES ('cpe:2.3:a:calderalabs:caldera_forms:1.6.3:*:*:*:*:wordpress:*:*', 40143, 19486979); +INSERT INTO cpes (cpe, short_cpe_id, version_id) VALUES ('cpe:2.3:a:cantemo:portal:3.4.6:*:*:*:*:*:*:*', 6591, 14489); +INSERT INTO cpes (cpe, short_cpe_id, version_id) VALUES ('cpe:2.3:a:canonical:metal_as_a_service:1.9.2:*:*:*:*:*:*:*', 54486, 14051023); +INSERT INTO cpes (cpe, short_cpe_id, version_id) VALUES ('cpe:2.3:a:canonical:update-manager:1\:0.142.19:*:*:*:*:*:*:*', 11798, null); +INSERT INTO cpes (cpe, short_cpe_id, version_id) VALUES ('cpe:2.3:a:cantemo:portal:3.0.0:*:*:*:*:*:*:*', 6591, 265074); +INSERT INTO cpes (cpe, short_cpe_id, version_id) VALUES ('cpe:2.3:a:cached_project:cached:0.4.0:*:*:*:*:rust:*:*', 54546, 249755); +INSERT INTO cpes (cpe, short_cpe_id, version_id) VALUES ('cpe:2.3:a:canonical:update-manager:1\:0.87.24:*:*:*:*:*:*:*', 11798, null); +INSERT INTO cpes (cpe, short_cpe_id, version_id) VALUES ('cpe:2.3:a:canonical:metal_as_a_service:1.9.0:beta2:*:*:*:*:*:*', 54486, 215573); +INSERT INTO cpes (cpe, short_cpe_id, version_id) VALUES ('cpe:2.3:a:calderalabs:caldera_forms:1.4.3.1:*:*:*:*:wordpress:*:*', 40143, 19471530); +INSERT INTO cpes (cpe, short_cpe_id, version_id) VALUES ('cpe:2.3:a:calderalabs:caldera_forms:1.0.1:*:*:*:*:wordpress:*:*', 40143, 265154); +INSERT INTO cpes (cpe, short_cpe_id, version_id) VALUES ('cpe:2.3:a:canonical:update-manager:1\:0.134.7:*:*:*:*:*:*:*', 11798, null); +INSERT INTO cpes (cpe, short_cpe_id, version_id) VALUES ('cpe:2.3:a:canonical:update-manager:1\:0.152.25.5:*:*:*:*:*:*:*', 11798, null); +INSERT INTO cpes (cpe, short_cpe_id, version_id) VALUES ('cpe:2.3:a:canonical:update-manager:1\:0.134.11.1:*:*:*:*:*:*:*', 11798, null); +INSERT INTO cpes (cpe, short_cpe_id, version_id) VALUES ('cpe:2.3:a:canonical:update-manager:1\:0.152.25:*:*:*:*:*:*:*', 11798, null); +INSERT INTO cpes (cpe, short_cpe_id, version_id) VALUES ('cpe:2.3:a:canonical:update-manager:1\:0.150.5.1:*:*:*:*:*:*:*', 11798, null); +INSERT INTO cpes (cpe, short_cpe_id, version_id) VALUES ('cpe:2.3:a:calderalabs:caldera_forms:1.1.9.8:*:*:*:*:wordpress:*:*', 40143, 10333707); +INSERT INTO cpes (cpe, short_cpe_id, version_id) VALUES ('cpe:2.3:a:cantemo:portal:2.4.4:*:*:*:*:*:*:*', 6591, 19502604); +INSERT INTO cpes (cpe, short_cpe_id, version_id) VALUES ('cpe:2.3:a:c2fo:comb:0.0.9:*:*:*:*:node.js:*:*', 4772, 14302); +INSERT INTO cpes (cpe, short_cpe_id, version_id) VALUES ('cpe:2.3:a:cantemo:portal:2.1.5:*:*:*:*:*:*:*', 6591, 15189); +INSERT INTO cpes (cpe, short_cpe_id, version_id) VALUES ('cpe:2.3:a:cantemo:portal:3.2.5:*:*:*:*:*:*:*', 6591, 14400); +INSERT INTO cpes (cpe, short_cpe_id, version_id) VALUES ('cpe:2.3:a:cached_project:cached:0.11.0:*:*:*:*:rust:*:*', 54546, 252639); +INSERT INTO cpes (cpe, short_cpe_id, version_id) VALUES ('cpe:2.3:a:cantemo:portal:3.1.9:*:*:*:*:*:*:*', 6591, 19484821); +INSERT INTO cpes (cpe, short_cpe_id, version_id) VALUES ('cpe:2.3:a:cantemo:portal:1.6.4:*:*:*:*:*:*:*', 6591, 8481); +INSERT INTO cpes (cpe, short_cpe_id, version_id) VALUES ('cpe:2.3:a:calderalabs:caldera_forms:1.0.4:*:*:*:*:wordpress:*:*', 40143, 265152); +INSERT INTO cpes (cpe, short_cpe_id, version_id) VALUES ('cpe:2.3:a:cached_project:cached:0.14.1:*:*:*:*:rust:*:*', 54546, 8952136); +INSERT INTO cpes (cpe, short_cpe_id, version_id) VALUES ('cpe:2.3:a:cached_project:cached:0.4.4:*:*:*:*:rust:*:*', 54546, 7256833); +INSERT INTO cpes (cpe, short_cpe_id, version_id) VALUES ('cpe:2.3:a:cantemo:portal:3.4.1:*:*:*:*:*:*:*', 6591, 11379260); +INSERT INTO cpes (cpe, short_cpe_id, version_id) VALUES ('cpe:2.3:a:canonical:metal_as_a_service:1.9.0:rc1:*:*:*:*:*:*', 54486, 215573); +INSERT INTO cpes (cpe, short_cpe_id, version_id) VALUES ('cpe:2.3:a:canonical:metal_as_a_service:1.9.0:beta1:*:*:*:*:*:*', 54486, 215573); +INSERT INTO cpes (cpe, short_cpe_id, version_id) VALUES ('cpe:2.3:a:canonical:metal_as_a_service:1.9.0:alpha2:*:*:*:*:*:*', 54486, 215573); +INSERT INTO cpes (cpe, short_cpe_id, version_id) VALUES ('cpe:2.3:a:canonical:metal_as_a_service:1.9.0:rc4:*:*:*:*:*:*', 54486, 215573); +INSERT INTO cpes (cpe, short_cpe_id, version_id) VALUES ('cpe:2.3:a:canonical:metal_as_a_service:1.9.0:alpha3:*:*:*:*:*:*', 54486, 215573); +INSERT INTO cpes (cpe, short_cpe_id, version_id) VALUES ('cpe:2.3:a:canonical:metal_as_a_service:1.9.0:alpha1:*:*:*:*:*:*', 54486, 215573); +INSERT INTO cpes (cpe, short_cpe_id, version_id) VALUES ('cpe:2.3:a:canonical:metal_as_a_service:1.9.0:-:*:*:*:*:*:*', 54486, 215573); +INSERT INTO cpes (cpe, short_cpe_id, version_id) VALUES ('cpe:2.3:a:canonical:metal_as_a_service:1.9.0:rc2:*:*:*:*:*:*', 54486, 215573); +INSERT INTO cpes (cpe, short_cpe_id, version_id) VALUES ('cpe:2.3:a:canonical:metal_as_a_service:1.9.0:rc3:*:*:*:*:*:*', 54486, 215573); +INSERT INTO cpes (cpe, short_cpe_id, version_id) VALUES ('cpe:2.3:a:canonical:metal_as_a_service:1.9.0:alpha5:*:*:*:*:*:*', 54486, 215573); +INSERT INTO cpes (cpe, short_cpe_id, version_id) VALUES ('cpe:2.3:a:cached_project:cached:0.21.1:*:*:*:*:rust:*:*', 54546, 19491213); +INSERT INTO cpes (cpe, short_cpe_id, version_id) VALUES ('cpe:2.3:a:cached_project:cached:0.16.0:*:*:*:*:rust:*:*', 54546, 3720103); +INSERT INTO cpes (cpe, short_cpe_id, version_id) VALUES ('cpe:2.3:a:cached_project:cached:0.13.0:*:*:*:*:rust:*:*', 54546, 14943); +INSERT INTO cpes (cpe, short_cpe_id, version_id) VALUES ('cpe:2.3:a:cached_project:cached:0.19.0:*:*:*:*:rust:*:*', 54546, 19269674); +INSERT INTO cpes (cpe, short_cpe_id, version_id) VALUES ('cpe:2.3:a:calderalabs:caldera_forms:1.1.10:*:*:*:*:wordpress:*:*', 40143, 19529343); +INSERT INTO cpes (cpe, short_cpe_id, version_id) VALUES ('cpe:2.3:a:cached_project:cached:0.12.0:*:*:*:*:rust:*:*', 54546, 241746); +INSERT INTO cpes (cpe, short_cpe_id, version_id) VALUES ('cpe:2.3:a:c2fo:comb:0.0.7:*:*:*:*:node.js:*:*', 4772, 14797); +INSERT INTO cpes (cpe, short_cpe_id, version_id) VALUES ('cpe:2.3:a:calderalabs:caldera_forms:1.5.0.7:*:*:*:*:wordpress:*:*', 40143, 11283815); +INSERT INTO cpes (cpe, short_cpe_id, version_id) VALUES ('cpe:2.3:a:call_project:call:5.0.0:*:*:*:*:node.js:*:*', 50021, 252059); +INSERT INTO cpes (cpe, short_cpe_id, version_id) VALUES ('cpe:2.3:a:calderalabs:caldera_forms:1.0.7:*:*:*:*:wordpress:*:*', 40143, 253846); +INSERT INTO cpes (cpe, short_cpe_id, version_id) VALUES ('cpe:2.3:a:cantemo:portal:3.1.6:*:*:*:*:*:*:*', 6591, 19484820); +INSERT INTO cpes (cpe, short_cpe_id, version_id) VALUES ('cpe:2.3:a:call_project:call:4.0.1:*:*:*:*:node.js:*:*', 50021, 1998); +INSERT INTO cpes (cpe, short_cpe_id, version_id) VALUES ('cpe:2.3:a:cached_project:cached:0.4.3:*:*:*:*:rust:*:*', 54546, 14945); +INSERT INTO cpes (cpe, short_cpe_id, version_id) VALUES ('cpe:2.3:a:cached_project:cached:0.20.0:*:*:*:*:rust:*:*', 54546, 7818861); +INSERT INTO cpes (cpe, short_cpe_id, version_id) VALUES ('cpe:2.3:a:calderalabs:caldera_forms:1.4.1:*:*:*:*:wordpress:*:*', 40143, 264115); +INSERT INTO cpes (cpe, short_cpe_id, version_id) VALUES ('cpe:2.3:a:cantemo:portal:1.4.1:*:*:*:*:*:*:*', 6591, 264115); +INSERT INTO cpes (cpe, short_cpe_id, version_id) VALUES ('cpe:2.3:a:c2fo:comb:0.1.2:*:*:*:*:node.js:*:*', 4772, 263169); +INSERT INTO cpes (cpe, short_cpe_id, version_id) VALUES ('cpe:2.3:a:calderalabs:caldera_forms:1.4.7:*:*:*:*:wordpress:*:*', 40143, 8795532); +INSERT INTO cpes (cpe, short_cpe_id, version_id) VALUES ('cpe:2.3:a:call_project:call:4.0.2:*:*:*:*:node.js:*:*', 50021, 12882); +INSERT INTO cpes (cpe, short_cpe_id, version_id) VALUES ('cpe:2.3:a:cantemo:portal:2.3.9:*:*:*:*:*:*:*', 6591, 19503485); +INSERT INTO cpes (cpe, short_cpe_id, version_id) VALUES ('cpe:2.3:a:calderalabs:caldera_forms:1.0.2:*:*:*:*:wordpress:*:*', 40143, 265150); +INSERT INTO cpes (cpe, short_cpe_id, version_id) VALUES ('cpe:2.3:a:cached-path-relative_project:cached-path-relative:1.0.2:*:*:*:*:node.js:*:*', 6930, 265150); +INSERT INTO cpes (cpe, short_cpe_id, version_id) VALUES ('cpe:2.3:a:calderalabs:caldera_forms:1.3.4.1:*:*:*:*:wordpress:*:*', 40143, 5600056); +INSERT INTO cpes (cpe, short_cpe_id, version_id) VALUES ('cpe:2.3:a:cantemo:portal:3.0.6:*:*:*:*:*:*:*', 6591, 19501164); +INSERT INTO cpes (cpe, short_cpe_id, version_id) VALUES ('cpe:2.3:a:calderalabs:caldera_forms:1.5.0.6:*:*:*:*:wordpress:*:*', 40143, 7235805); +INSERT INTO cpes (cpe, short_cpe_id, version_id) VALUES ('cpe:2.3:a:cantemo:portal:2.4.1:*:*:*:*:*:*:*', 6591, 15337); +INSERT INTO cpes (cpe, short_cpe_id, version_id) VALUES ('cpe:2.3:a:calderalabs:caldera_forms:1.5.0.9:*:*:*:*:wordpress:*:*', 40143, 11562873); +INSERT INTO cpes (cpe, short_cpe_id, version_id) VALUES ('cpe:2.3:a:call_project:call:3.0.0:*:*:*:*:node.js:*:*', 50021, 265074); +INSERT INTO cpes (cpe, short_cpe_id, version_id) VALUES ('cpe:2.3:a:cached_project:cached:0.15.1:*:*:*:*:rust:*:*', 54546, 19487206); +INSERT INTO cpes (cpe, short_cpe_id, version_id) VALUES ('cpe:2.3:a:cantemo:portal:2.2.1:*:*:*:*:*:*:*', 6591, 19487479); +INSERT INTO cpes (cpe, short_cpe_id, version_id) VALUES ('cpe:2.3:a:cached_project:cached:0.2.1:*:*:*:*:rust:*:*', 54546, 264557); +INSERT INTO cpes (cpe, short_cpe_id, version_id) VALUES ('cpe:2.3:a:c2fo:comb:0.2.1:*:*:*:*:node.js:*:*', 4772, 264557); +INSERT INTO cpes (cpe, short_cpe_id, version_id) VALUES ('cpe:2.3:a:cambridge_enterprise:jbig-kit:0.5:*:*:*:*:*:*:*', 32816, 19487504); +INSERT INTO cpes (cpe, short_cpe_id, version_id) VALUES ('cpe:2.3:a:c2fo:comb:0.2.5:*:*:*:*:node.js:*:*', 4772, 14851); +INSERT INTO cpes (cpe, short_cpe_id, version_id) VALUES ('cpe:2.3:a:cantemo:portal:3.2.1:*:*:*:*:*:*:*', 6591, 13152); +INSERT INTO cpes (cpe, short_cpe_id, version_id) VALUES ('cpe:2.3:a:candidate-application-form_project:candidate-application-form:1.0:*:*:*:*:wordpress:*:*', 8270, 265157); +INSERT INTO cpes (cpe, short_cpe_id, version_id) VALUES ('cpe:2.3:a:cambridge_enterprise:jbig-kit:1.0:*:*:*:*:*:*:*', 32816, 265157); +INSERT INTO cpes (cpe, short_cpe_id, version_id) VALUES ('cpe:2.3:a:candlepinproject:candlepin:0.4.27:*:*:*:*:*:*:*', 23153, 19295050); +INSERT INTO cpes (cpe, short_cpe_id, version_id) VALUES ('cpe:2.3:a:calderalabs:caldera_forms:1.1.6:*:*:*:*:wordpress:*:*', 40143, 14744); +INSERT INTO cpes (cpe, short_cpe_id, version_id) VALUES ('cpe:2.3:a:cambridge_enterprise:jbig-kit:0.6:*:*:*:*:*:*:*', 32816, 252413); +INSERT INTO cpes (cpe, short_cpe_id, version_id) VALUES ('cpe:2.3:a:cantemo:portal:2.3.11:*:*:*:*:*:*:*', 6591, 9123); +INSERT INTO cpes (cpe, short_cpe_id, version_id) VALUES ('cpe:2.3:a:cached_project:cached:0.23.0:*:*:*:*:rust:*:*', 54546, 12136986); +INSERT INTO cpes (cpe, short_cpe_id, version_id) VALUES ('cpe:2.3:a:c2fo:comb:1.2.0:*:*:*:*:node.js:*:*', 4772, 263438); +INSERT INTO cpes (cpe, short_cpe_id, version_id) VALUES ('cpe:2.3:a:cantemo:portal:3.0.13:*:*:*:*:*:*:*', 6591, 13966); +INSERT INTO cpes (cpe, short_cpe_id, version_id) VALUES ('cpe:2.3:a:calderalabs:caldera_forms:1.6.1:*:*:*:*:wordpress:*:*', 40143, 15232); +INSERT INTO cpes (cpe, short_cpe_id, version_id) VALUES ('cpe:2.3:a:cantemo:portal:1.6.1:*:*:*:*:*:*:*', 6591, 15232); +INSERT INTO cpes (cpe, short_cpe_id, version_id) VALUES ('cpe:2.3:a:calderalabs:caldera_forms:1.3.1:*:*:*:*:wordpress:*:*', 40143, 263171); +INSERT INTO cpes (cpe, short_cpe_id, version_id) VALUES ('cpe:2.3:a:calderalabs:caldera_forms:1.4.9:*:*:*:*:wordpress:*:*', 40143, 19467646); +INSERT INTO cpes (cpe, short_cpe_id, version_id) VALUES ('cpe:2.3:a:call_project:call:5.0.3:*:*:*:*:node.js:*:*', 50021, 1993); +INSERT INTO cpes (cpe, short_cpe_id, version_id) VALUES ('cpe:2.3:a:canonical:screen-resolution-extra:0.17.2:*:*:*:*:*:*:*', 20819, 19295009); +INSERT INTO cpes (cpe, short_cpe_id, version_id) VALUES ('cpe:2.3:a:canonical:screen-resolution-extra:15.0.0:*:*:*:*:*:*:*', 20819, 30001); +INSERT INTO cpes (cpe, short_cpe_id, version_id) VALUES ('cpe:2.3:a:calderalabs:caldera_forms:1.0.9:*:*:*:*:wordpress:*:*', 40143, 263333); +INSERT INTO cpes (cpe, short_cpe_id, version_id) VALUES ('cpe:2.3:a:calderalabs:caldera_forms:1.1.9.4:*:*:*:*:wordpress:*:*', 40143, 10206536); +INSERT INTO cpes (cpe, short_cpe_id, version_id) VALUES ('cpe:2.3:a:cantemo:portal:3.1.7:*:*:*:*:*:*:*', 6591, 19468627); +INSERT INTO cpes (cpe, short_cpe_id, version_id) VALUES ('cpe:2.3:a:calderalabs:caldera_forms:1.0.91:*:*:*:*:wordpress:*:*', 40143, 19258660); +INSERT INTO cpes (cpe, short_cpe_id, version_id) VALUES ('cpe:2.3:a:campaign_monitor_project:campaign_monitor:7.x-1.0:*:*:*:*:drupal:*:*', 44876, 19459307); +INSERT INTO cpes (cpe, short_cpe_id, version_id) VALUES ('cpe:2.3:a:calderalabs:caldera_forms:1.5.5:*:*:*:*:wordpress:*:*', 40143, 8660478); +INSERT INTO cpes (cpe, short_cpe_id, version_id) VALUES ('cpe:2.3:a:cantemo:portal:1.5.5:*:*:*:*:*:*:*', 6591, 8660478); +INSERT INTO cpes (cpe, short_cpe_id, version_id) VALUES ('cpe:2.3:a:c2fo:comb:1.1.0:*:*:*:*:node.js:*:*', 4772, 264339); +INSERT INTO cpes (cpe, short_cpe_id, version_id) VALUES ('cpe:2.3:a:cached-path-relative_project:cached-path-relative:1.1.0:*:*:*:*:node.js:*:*', 6930, 264339); +INSERT INTO cpes (cpe, short_cpe_id, version_id) VALUES ('cpe:2.3:a:candlepinproject:candlepin:0.6.3:*:*:*:*:*:*:*', 23153, 10907584); +INSERT INTO cpes (cpe, short_cpe_id, version_id) VALUES ('cpe:2.3:a:c2fo:comb:0.3.2:*:*:*:*:node.js:*:*', 4772, 255921); +INSERT INTO cpes (cpe, short_cpe_id, version_id) VALUES ('cpe:2.3:a:calderalabs:caldera_forms:1.3.2:*:*:*:*:wordpress:*:*', 40143, 252611); +INSERT INTO cpes (cpe, short_cpe_id, version_id) VALUES ('cpe:2.3:a:cantemo:portal:3.2.7:*:*:*:*:*:*:*', 6591, 19532454); +INSERT INTO cpes (cpe, short_cpe_id, version_id) VALUES ('cpe:2.3:a:canonical:metal_as_a_service:1.9.1:*:*:*:*:*:*:*', 54486, 19322787); diff --git a/pkg/models/tests/cpe_cve.sql b/pkg/models/tests/cpe_cve.sql deleted file mode 100644 index f80c0fa..0000000 --- a/pkg/models/tests/cpe_cve.sql +++ /dev/null @@ -1,362 +0,0 @@ -DROP TABLE IF EXISTS cpe_cve; -CREATE TABLE "cpe_cve" ( - "cpe_id" INTEGER NOT NULL, - "cve_id" INTEGER NOT NULL, - PRIMARY KEY("cpe_id","cve_id") -); - -INSERT INTO cpe_cve ("cpe_id", "cve_id") VALUES (157053, 155978); -INSERT INTO cpe_cve ("cpe_id", "cve_id") VALUES (157054, 155978); -INSERT INTO cpe_cve ("cpe_id", "cve_id") VALUES (157055, 155978); -INSERT INTO cpe_cve ("cpe_id", "cve_id") VALUES (157056, 155978); -INSERT INTO cpe_cve ("cpe_id", "cve_id") VALUES (157057, 155978); -INSERT INTO cpe_cve ("cpe_id", "cve_id") VALUES (157058, 155978); -INSERT INTO cpe_cve ("cpe_id", "cve_id") VALUES (157059, 155978); -INSERT INTO cpe_cve ("cpe_id", "cve_id") VALUES (157060, 155978); -INSERT INTO cpe_cve ("cpe_id", "cve_id") VALUES (157061, 155978); -INSERT INTO cpe_cve ("cpe_id", "cve_id") VALUES (157062, 155978); -INSERT INTO cpe_cve ("cpe_id", "cve_id") VALUES (157063, 155978); -INSERT INTO cpe_cve ("cpe_id", "cve_id") VALUES (157064, 155978); -INSERT INTO cpe_cve ("cpe_id", "cve_id") VALUES (157065, 155978); -INSERT INTO cpe_cve ("cpe_id", "cve_id") VALUES (157066, 155978); -INSERT INTO cpe_cve ("cpe_id", "cve_id") VALUES (157067, 155978); -INSERT INTO cpe_cve ("cpe_id", "cve_id") VALUES (157068, 155978); -INSERT INTO cpe_cve ("cpe_id", "cve_id") VALUES (157069, 155978); -INSERT INTO cpe_cve ("cpe_id", "cve_id") VALUES (157070, 155978); -INSERT INTO cpe_cve ("cpe_id", "cve_id") VALUES (157071, 155978); -INSERT INTO cpe_cve ("cpe_id", "cve_id") VALUES (157072, 155978); -INSERT INTO cpe_cve ("cpe_id", "cve_id") VALUES (157073, 155978); -INSERT INTO cpe_cve ("cpe_id", "cve_id") VALUES (157074, 155978); -INSERT INTO cpe_cve ("cpe_id", "cve_id") VALUES (157075, 155978); -INSERT INTO cpe_cve ("cpe_id", "cve_id") VALUES (157076, 155978); -INSERT INTO cpe_cve ("cpe_id", "cve_id") VALUES (157077, 155978); -INSERT INTO cpe_cve ("cpe_id", "cve_id") VALUES (157078, 155978); -INSERT INTO cpe_cve ("cpe_id", "cve_id") VALUES (157079, 155978); -INSERT INTO cpe_cve ("cpe_id", "cve_id") VALUES (157080, 155978); -INSERT INTO cpe_cve ("cpe_id", "cve_id") VALUES (157081, 155978); -INSERT INTO cpe_cve ("cpe_id", "cve_id") VALUES (157082, 155978); -INSERT INTO cpe_cve ("cpe_id", "cve_id") VALUES (157083, 155978); -INSERT INTO cpe_cve ("cpe_id", "cve_id") VALUES (157084, 155978); -INSERT INTO cpe_cve ("cpe_id", "cve_id") VALUES (157085, 155978); -INSERT INTO cpe_cve ("cpe_id", "cve_id") VALUES (157086, 155978); -INSERT INTO cpe_cve ("cpe_id", "cve_id") VALUES (157087, 155978); -INSERT INTO cpe_cve ("cpe_id", "cve_id") VALUES (157088, 155978); -INSERT INTO cpe_cve ("cpe_id", "cve_id") VALUES (157089, 155978); -INSERT INTO cpe_cve ("cpe_id", "cve_id") VALUES (157090, 155978); -INSERT INTO cpe_cve ("cpe_id", "cve_id") VALUES (157091, 155978); -INSERT INTO cpe_cve ("cpe_id", "cve_id") VALUES (157092, 155978); -INSERT INTO cpe_cve ("cpe_id", "cve_id") VALUES (157093, 155978); -INSERT INTO cpe_cve ("cpe_id", "cve_id") VALUES (157094, 155978); -INSERT INTO cpe_cve ("cpe_id", "cve_id") VALUES (157095, 155978); -INSERT INTO cpe_cve ("cpe_id", "cve_id") VALUES (157096, 155978); -INSERT INTO cpe_cve ("cpe_id", "cve_id") VALUES (157097, 155978); -INSERT INTO cpe_cve ("cpe_id", "cve_id") VALUES (157162, 68981); -INSERT INTO cpe_cve ("cpe_id", "cve_id") VALUES (157162, 68982); -INSERT INTO cpe_cve ("cpe_id", "cve_id") VALUES (157162, 68983); -INSERT INTO cpe_cve ("cpe_id", "cve_id") VALUES (157205, 108629); -INSERT INTO cpe_cve ("cpe_id", "cve_id") VALUES (157205, 155966); -INSERT INTO cpe_cve ("cpe_id", "cve_id") VALUES (157206, 108629); -INSERT INTO cpe_cve ("cpe_id", "cve_id") VALUES (157206, 155966); -INSERT INTO cpe_cve ("cpe_id", "cve_id") VALUES (157207, 155966); -INSERT INTO cpe_cve ("cpe_id", "cve_id") VALUES (158690, 116241); -INSERT INTO cpe_cve ("cpe_id", "cve_id") VALUES (158691, 116241); -INSERT INTO cpe_cve ("cpe_id", "cve_id") VALUES (158692, 116241); -INSERT INTO cpe_cve ("cpe_id", "cve_id") VALUES (158693, 116241); -INSERT INTO cpe_cve ("cpe_id", "cve_id") VALUES (158694, 116241); -INSERT INTO cpe_cve ("cpe_id", "cve_id") VALUES (158695, 116241); -INSERT INTO cpe_cve ("cpe_id", "cve_id") VALUES (158696, 116241); -INSERT INTO cpe_cve ("cpe_id", "cve_id") VALUES (158697, 116241); -INSERT INTO cpe_cve ("cpe_id", "cve_id") VALUES (158698, 116241); -INSERT INTO cpe_cve ("cpe_id", "cve_id") VALUES (158699, 116241); -INSERT INTO cpe_cve ("cpe_id", "cve_id") VALUES (158700, 116241); -INSERT INTO cpe_cve ("cpe_id", "cve_id") VALUES (158701, 116241); -INSERT INTO cpe_cve ("cpe_id", "cve_id") VALUES (158702, 116241); -INSERT INTO cpe_cve ("cpe_id", "cve_id") VALUES (158703, 116241); -INSERT INTO cpe_cve ("cpe_id", "cve_id") VALUES (158704, 116241); -INSERT INTO cpe_cve ("cpe_id", "cve_id") VALUES (158705, 116241); -INSERT INTO cpe_cve ("cpe_id", "cve_id") VALUES (158706, 116241); -INSERT INTO cpe_cve ("cpe_id", "cve_id") VALUES (158707, 116241); -INSERT INTO cpe_cve ("cpe_id", "cve_id") VALUES (158708, 116241); -INSERT INTO cpe_cve ("cpe_id", "cve_id") VALUES (158709, 116241); -INSERT INTO cpe_cve ("cpe_id", "cve_id") VALUES (158710, 116241); -INSERT INTO cpe_cve ("cpe_id", "cve_id") VALUES (158711, 116241); -INSERT INTO cpe_cve ("cpe_id", "cve_id") VALUES (158712, 116241); -INSERT INTO cpe_cve ("cpe_id", "cve_id") VALUES (158713, 116241); -INSERT INTO cpe_cve ("cpe_id", "cve_id") VALUES (158714, 116241); -INSERT INTO cpe_cve ("cpe_id", "cve_id") VALUES (158715, 116241); -INSERT INTO cpe_cve ("cpe_id", "cve_id") VALUES (158716, 116241); -INSERT INTO cpe_cve ("cpe_id", "cve_id") VALUES (158717, 116241); -INSERT INTO cpe_cve ("cpe_id", "cve_id") VALUES (158718, 116241); -INSERT INTO cpe_cve ("cpe_id", "cve_id") VALUES (158719, 116241); -INSERT INTO cpe_cve ("cpe_id", "cve_id") VALUES (158720, 116241); -INSERT INTO cpe_cve ("cpe_id", "cve_id") VALUES (158721, 116241); -INSERT INTO cpe_cve ("cpe_id", "cve_id") VALUES (158722, 116241); -INSERT INTO cpe_cve ("cpe_id", "cve_id") VALUES (158723, 116241); -INSERT INTO cpe_cve ("cpe_id", "cve_id") VALUES (158724, 116241); -INSERT INTO cpe_cve ("cpe_id", "cve_id") VALUES (158725, 116241); -INSERT INTO cpe_cve ("cpe_id", "cve_id") VALUES (158726, 116241); -INSERT INTO cpe_cve ("cpe_id", "cve_id") VALUES (158727, 116241); -INSERT INTO cpe_cve ("cpe_id", "cve_id") VALUES (158728, 116241); -INSERT INTO cpe_cve ("cpe_id", "cve_id") VALUES (158729, 116241); -INSERT INTO cpe_cve ("cpe_id", "cve_id") VALUES (158730, 116241); -INSERT INTO cpe_cve ("cpe_id", "cve_id") VALUES (158731, 116241); -INSERT INTO cpe_cve ("cpe_id", "cve_id") VALUES (158732, 116241); -INSERT INTO cpe_cve ("cpe_id", "cve_id") VALUES (158733, 116241); -INSERT INTO cpe_cve ("cpe_id", "cve_id") VALUES (158734, 116241); -INSERT INTO cpe_cve ("cpe_id", "cve_id") VALUES (158735, 116241); -INSERT INTO cpe_cve ("cpe_id", "cve_id") VALUES (158736, 116241); -INSERT INTO cpe_cve ("cpe_id", "cve_id") VALUES (158737, 116241); -INSERT INTO cpe_cve ("cpe_id", "cve_id") VALUES (158738, 116241); -INSERT INTO cpe_cve ("cpe_id", "cve_id") VALUES (158739, 116241); -INSERT INTO cpe_cve ("cpe_id", "cve_id") VALUES (158740, 116241); -INSERT INTO cpe_cve ("cpe_id", "cve_id") VALUES (158741, 116241); -INSERT INTO cpe_cve ("cpe_id", "cve_id") VALUES (158742, 116241); -INSERT INTO cpe_cve ("cpe_id", "cve_id") VALUES (158743, 116241); -INSERT INTO cpe_cve ("cpe_id", "cve_id") VALUES (158744, 116241); -INSERT INTO cpe_cve ("cpe_id", "cve_id") VALUES (158745, 116241); -INSERT INTO cpe_cve ("cpe_id", "cve_id") VALUES (158746, 116241); -INSERT INTO cpe_cve ("cpe_id", "cve_id") VALUES (158747, 116241); -INSERT INTO cpe_cve ("cpe_id", "cve_id") VALUES (158748, 116241); -INSERT INTO cpe_cve ("cpe_id", "cve_id") VALUES (158749, 116241); -INSERT INTO cpe_cve ("cpe_id", "cve_id") VALUES (158750, 116241); -INSERT INTO cpe_cve ("cpe_id", "cve_id") VALUES (158751, 116241); -INSERT INTO cpe_cve ("cpe_id", "cve_id") VALUES (158752, 116241); -INSERT INTO cpe_cve ("cpe_id", "cve_id") VALUES (158753, 116241); -INSERT INTO cpe_cve ("cpe_id", "cve_id") VALUES (158754, 116241); -INSERT INTO cpe_cve ("cpe_id", "cve_id") VALUES (158755, 116241); -INSERT INTO cpe_cve ("cpe_id", "cve_id") VALUES (158756, 116241); -INSERT INTO cpe_cve ("cpe_id", "cve_id") VALUES (158757, 116241); -INSERT INTO cpe_cve ("cpe_id", "cve_id") VALUES (158758, 116241); -INSERT INTO cpe_cve ("cpe_id", "cve_id") VALUES (158759, 116241); -INSERT INTO cpe_cve ("cpe_id", "cve_id") VALUES (158760, 116241); -INSERT INTO cpe_cve ("cpe_id", "cve_id") VALUES (158761, 116241); -INSERT INTO cpe_cve ("cpe_id", "cve_id") VALUES (158762, 116241); -INSERT INTO cpe_cve ("cpe_id", "cve_id") VALUES (158763, 116241); -INSERT INTO cpe_cve ("cpe_id", "cve_id") VALUES (158764, 116241); -INSERT INTO cpe_cve ("cpe_id", "cve_id") VALUES (158765, 116241); -INSERT INTO cpe_cve ("cpe_id", "cve_id") VALUES (158766, 116241); -INSERT INTO cpe_cve ("cpe_id", "cve_id") VALUES (158767, 116241); -INSERT INTO cpe_cve ("cpe_id", "cve_id") VALUES (158768, 116241); -INSERT INTO cpe_cve ("cpe_id", "cve_id") VALUES (158769, 116241); -INSERT INTO cpe_cve ("cpe_id", "cve_id") VALUES (158770, 116241); -INSERT INTO cpe_cve ("cpe_id", "cve_id") VALUES (158771, 116241); -INSERT INTO cpe_cve ("cpe_id", "cve_id") VALUES (158772, 116241); -INSERT INTO cpe_cve ("cpe_id", "cve_id") VALUES (158773, 116241); -INSERT INTO cpe_cve ("cpe_id", "cve_id") VALUES (158774, 116241); -INSERT INTO cpe_cve ("cpe_id", "cve_id") VALUES (158775, 116241); -INSERT INTO cpe_cve ("cpe_id", "cve_id") VALUES (158776, 116241); -INSERT INTO cpe_cve ("cpe_id", "cve_id") VALUES (159551, 79792); -INSERT INTO cpe_cve ("cpe_id", "cve_id") VALUES (159552, 79792); -INSERT INTO cpe_cve ("cpe_id", "cve_id") VALUES (159553, 79792); -INSERT INTO cpe_cve ("cpe_id", "cve_id") VALUES (159554, 79792); -INSERT INTO cpe_cve ("cpe_id", "cve_id") VALUES (159572, 93681); -INSERT INTO cpe_cve ("cpe_id", "cve_id") VALUES (159574, 61182); -INSERT INTO cpe_cve ("cpe_id", "cve_id") VALUES (159575, 61182); -INSERT INTO cpe_cve ("cpe_id", "cve_id") VALUES (159576, 61182); -INSERT INTO cpe_cve ("cpe_id", "cve_id") VALUES (159577, 61182); -INSERT INTO cpe_cve ("cpe_id", "cve_id") VALUES (159578, 61182); -INSERT INTO cpe_cve ("cpe_id", "cve_id") VALUES (159579, 61182); -INSERT INTO cpe_cve ("cpe_id", "cve_id") VALUES (159580, 61182); -INSERT INTO cpe_cve ("cpe_id", "cve_id") VALUES (159581, 61182); -INSERT INTO cpe_cve ("cpe_id", "cve_id") VALUES (159582, 61182); -INSERT INTO cpe_cve ("cpe_id", "cve_id") VALUES (159583, 61182); -INSERT INTO cpe_cve ("cpe_id", "cve_id") VALUES (159584, 61182); -INSERT INTO cpe_cve ("cpe_id", "cve_id") VALUES (159585, 61182); -INSERT INTO cpe_cve ("cpe_id", "cve_id") VALUES (159586, 61182); -INSERT INTO cpe_cve ("cpe_id", "cve_id") VALUES (159588, 73992); -INSERT INTO cpe_cve ("cpe_id", "cve_id") VALUES (159772, 71233); -INSERT INTO cpe_cve ("cpe_id", "cve_id") VALUES (159776, 55512); -INSERT INTO cpe_cve ("cpe_id", "cve_id") VALUES (159776, 74684); -INSERT INTO cpe_cve ("cpe_id", "cve_id") VALUES (159777, 55512); -INSERT INTO cpe_cve ("cpe_id", "cve_id") VALUES (159778, 55512); -INSERT INTO cpe_cve ("cpe_id", "cve_id") VALUES (159779, 55512); -INSERT INTO cpe_cve ("cpe_id", "cve_id") VALUES (159780, 55512); -INSERT INTO cpe_cve ("cpe_id", "cve_id") VALUES (159781, 55512); -INSERT INTO cpe_cve ("cpe_id", "cve_id") VALUES (159782, 55512); -INSERT INTO cpe_cve ("cpe_id", "cve_id") VALUES (160099, 142125); -INSERT INTO cpe_cve ("cpe_id", "cve_id") VALUES (160187, 80810); -INSERT INTO cpe_cve ("cpe_id", "cve_id") VALUES (160187, 80811); -INSERT INTO cpe_cve ("cpe_id", "cve_id") VALUES (160188, 63264); -INSERT INTO cpe_cve ("cpe_id", "cve_id") VALUES (160188, 63265); -INSERT INTO cpe_cve ("cpe_id", "cve_id") VALUES (160188, 63266); -INSERT INTO cpe_cve ("cpe_id", "cve_id") VALUES (160188, 71530); -INSERT INTO cpe_cve ("cpe_id", "cve_id") VALUES (160189, 63264); -INSERT INTO cpe_cve ("cpe_id", "cve_id") VALUES (160189, 63265); -INSERT INTO cpe_cve ("cpe_id", "cve_id") VALUES (160189, 63266); -INSERT INTO cpe_cve ("cpe_id", "cve_id") VALUES (160189, 71530); -INSERT INTO cpe_cve ("cpe_id", "cve_id") VALUES (160190, 63264); -INSERT INTO cpe_cve ("cpe_id", "cve_id") VALUES (160190, 63265); -INSERT INTO cpe_cve ("cpe_id", "cve_id") VALUES (160190, 63266); -INSERT INTO cpe_cve ("cpe_id", "cve_id") VALUES (160190, 71530); -INSERT INTO cpe_cve ("cpe_id", "cve_id") VALUES (160191, 63264); -INSERT INTO cpe_cve ("cpe_id", "cve_id") VALUES (160191, 63265); -INSERT INTO cpe_cve ("cpe_id", "cve_id") VALUES (160191, 63266); -INSERT INTO cpe_cve ("cpe_id", "cve_id") VALUES (160191, 71530); -INSERT INTO cpe_cve ("cpe_id", "cve_id") VALUES (160192, 63264); -INSERT INTO cpe_cve ("cpe_id", "cve_id") VALUES (160192, 63265); -INSERT INTO cpe_cve ("cpe_id", "cve_id") VALUES (160192, 63266); -INSERT INTO cpe_cve ("cpe_id", "cve_id") VALUES (160192, 71530); -INSERT INTO cpe_cve ("cpe_id", "cve_id") VALUES (160193, 63264); -INSERT INTO cpe_cve ("cpe_id", "cve_id") VALUES (160193, 63265); -INSERT INTO cpe_cve ("cpe_id", "cve_id") VALUES (160193, 63266); -INSERT INTO cpe_cve ("cpe_id", "cve_id") VALUES (160193, 71530); -INSERT INTO cpe_cve ("cpe_id", "cve_id") VALUES (160194, 63264); -INSERT INTO cpe_cve ("cpe_id", "cve_id") VALUES (160194, 63265); -INSERT INTO cpe_cve ("cpe_id", "cve_id") VALUES (160194, 63266); -INSERT INTO cpe_cve ("cpe_id", "cve_id") VALUES (160194, 71530); -INSERT INTO cpe_cve ("cpe_id", "cve_id") VALUES (160195, 63264); -INSERT INTO cpe_cve ("cpe_id", "cve_id") VALUES (160195, 63265); -INSERT INTO cpe_cve ("cpe_id", "cve_id") VALUES (160195, 63266); -INSERT INTO cpe_cve ("cpe_id", "cve_id") VALUES (160195, 71530); -INSERT INTO cpe_cve ("cpe_id", "cve_id") VALUES (160196, 63264); -INSERT INTO cpe_cve ("cpe_id", "cve_id") VALUES (160196, 63265); -INSERT INTO cpe_cve ("cpe_id", "cve_id") VALUES (160196, 63266); -INSERT INTO cpe_cve ("cpe_id", "cve_id") VALUES (160196, 71530); -INSERT INTO cpe_cve ("cpe_id", "cve_id") VALUES (160197, 63264); -INSERT INTO cpe_cve ("cpe_id", "cve_id") VALUES (160197, 63265); -INSERT INTO cpe_cve ("cpe_id", "cve_id") VALUES (160197, 63266); -INSERT INTO cpe_cve ("cpe_id", "cve_id") VALUES (160197, 71530); -INSERT INTO cpe_cve ("cpe_id", "cve_id") VALUES (160198, 63264); -INSERT INTO cpe_cve ("cpe_id", "cve_id") VALUES (160198, 63265); -INSERT INTO cpe_cve ("cpe_id", "cve_id") VALUES (160198, 63266); -INSERT INTO cpe_cve ("cpe_id", "cve_id") VALUES (160198, 71530); -INSERT INTO cpe_cve ("cpe_id", "cve_id") VALUES (160199, 63264); -INSERT INTO cpe_cve ("cpe_id", "cve_id") VALUES (160199, 63265); -INSERT INTO cpe_cve ("cpe_id", "cve_id") VALUES (160199, 63266); -INSERT INTO cpe_cve ("cpe_id", "cve_id") VALUES (160199, 71530); -INSERT INTO cpe_cve ("cpe_id", "cve_id") VALUES (160200, 63264); -INSERT INTO cpe_cve ("cpe_id", "cve_id") VALUES (160200, 63265); -INSERT INTO cpe_cve ("cpe_id", "cve_id") VALUES (160200, 63266); -INSERT INTO cpe_cve ("cpe_id", "cve_id") VALUES (160200, 71530); -INSERT INTO cpe_cve ("cpe_id", "cve_id") VALUES (160288, 117075); -INSERT INTO cpe_cve ("cpe_id", "cve_id") VALUES (160587, 80809); -INSERT INTO cpe_cve ("cpe_id", "cve_id") VALUES (160588, 80808); -INSERT INTO cpe_cve ("cpe_id", "cve_id") VALUES (160595, 48612); -INSERT INTO cpe_cve ("cpe_id", "cve_id") VALUES (160595, 48614); -INSERT INTO cpe_cve ("cpe_id", "cve_id") VALUES (160596, 48612); -INSERT INTO cpe_cve ("cpe_id", "cve_id") VALUES (160596, 48614); -INSERT INTO cpe_cve ("cpe_id", "cve_id") VALUES (160598, 48612); -INSERT INTO cpe_cve ("cpe_id", "cve_id") VALUES (160598, 48614); -INSERT INTO cpe_cve ("cpe_id", "cve_id") VALUES (160600, 48612); -INSERT INTO cpe_cve ("cpe_id", "cve_id") VALUES (160600, 48614); -INSERT INTO cpe_cve ("cpe_id", "cve_id") VALUES (160602, 48612); -INSERT INTO cpe_cve ("cpe_id", "cve_id") VALUES (160602, 48614); -INSERT INTO cpe_cve ("cpe_id", "cve_id") VALUES (160769, 131065); -INSERT INTO cpe_cve ("cpe_id", "cve_id") VALUES (160770, 131065); -INSERT INTO cpe_cve ("cpe_id", "cve_id") VALUES (160771, 131065); -INSERT INTO cpe_cve ("cpe_id", "cve_id") VALUES (160772, 131065); -INSERT INTO cpe_cve ("cpe_id", "cve_id") VALUES (160773, 131065); -INSERT INTO cpe_cve ("cpe_id", "cve_id") VALUES (160774, 131065); -INSERT INTO cpe_cve ("cpe_id", "cve_id") VALUES (160775, 131065); -INSERT INTO cpe_cve ("cpe_id", "cve_id") VALUES (160776, 131065); -INSERT INTO cpe_cve ("cpe_id", "cve_id") VALUES (160777, 131065); -INSERT INTO cpe_cve ("cpe_id", "cve_id") VALUES (160778, 131065); -INSERT INTO cpe_cve ("cpe_id", "cve_id") VALUES (160779, 131065); -INSERT INTO cpe_cve ("cpe_id", "cve_id") VALUES (160780, 131065); -INSERT INTO cpe_cve ("cpe_id", "cve_id") VALUES (160781, 131065); -INSERT INTO cpe_cve ("cpe_id", "cve_id") VALUES (160782, 131065); -INSERT INTO cpe_cve ("cpe_id", "cve_id") VALUES (160783, 131065); -INSERT INTO cpe_cve ("cpe_id", "cve_id") VALUES (160784, 131065); -INSERT INTO cpe_cve ("cpe_id", "cve_id") VALUES (160785, 131065); -INSERT INTO cpe_cve ("cpe_id", "cve_id") VALUES (160786, 131065); -INSERT INTO cpe_cve ("cpe_id", "cve_id") VALUES (160787, 131065); -INSERT INTO cpe_cve ("cpe_id", "cve_id") VALUES (160788, 131065); -INSERT INTO cpe_cve ("cpe_id", "cve_id") VALUES (160789, 131065); -INSERT INTO cpe_cve ("cpe_id", "cve_id") VALUES (160790, 131065); -INSERT INTO cpe_cve ("cpe_id", "cve_id") VALUES (160791, 131065); -INSERT INTO cpe_cve ("cpe_id", "cve_id") VALUES (160792, 131065); -INSERT INTO cpe_cve ("cpe_id", "cve_id") VALUES (160793, 131065); -INSERT INTO cpe_cve ("cpe_id", "cve_id") VALUES (160794, 131065); -INSERT INTO cpe_cve ("cpe_id", "cve_id") VALUES (160795, 131065); -INSERT INTO cpe_cve ("cpe_id", "cve_id") VALUES (160796, 131065); -INSERT INTO cpe_cve ("cpe_id", "cve_id") VALUES (160797, 131065); -INSERT INTO cpe_cve ("cpe_id", "cve_id") VALUES (160798, 131065); -INSERT INTO cpe_cve ("cpe_id", "cve_id") VALUES (160799, 131065); -INSERT INTO cpe_cve ("cpe_id", "cve_id") VALUES (160800, 131065); -INSERT INTO cpe_cve ("cpe_id", "cve_id") VALUES (160801, 131065); -INSERT INTO cpe_cve ("cpe_id", "cve_id") VALUES (160802, 131065); -INSERT INTO cpe_cve ("cpe_id", "cve_id") VALUES (160803, 131065); -INSERT INTO cpe_cve ("cpe_id", "cve_id") VALUES (160804, 131065); -INSERT INTO cpe_cve ("cpe_id", "cve_id") VALUES (160805, 131065); -INSERT INTO cpe_cve ("cpe_id", "cve_id") VALUES (160806, 131065); -INSERT INTO cpe_cve ("cpe_id", "cve_id") VALUES (160807, 131065); -INSERT INTO cpe_cve ("cpe_id", "cve_id") VALUES (160808, 131065); -INSERT INTO cpe_cve ("cpe_id", "cve_id") VALUES (160809, 131065); -INSERT INTO cpe_cve ("cpe_id", "cve_id") VALUES (160810, 131065); -INSERT INTO cpe_cve ("cpe_id", "cve_id") VALUES (160811, 131065); -INSERT INTO cpe_cve ("cpe_id", "cve_id") VALUES (160812, 131065); -INSERT INTO cpe_cve ("cpe_id", "cve_id") VALUES (160813, 131065); -INSERT INTO cpe_cve ("cpe_id", "cve_id") VALUES (160814, 131065); -INSERT INTO cpe_cve ("cpe_id", "cve_id") VALUES (160815, 131065); -INSERT INTO cpe_cve ("cpe_id", "cve_id") VALUES (160816, 131065); -INSERT INTO cpe_cve ("cpe_id", "cve_id") VALUES (160817, 131065); -INSERT INTO cpe_cve ("cpe_id", "cve_id") VALUES (160818, 131065); -INSERT INTO cpe_cve ("cpe_id", "cve_id") VALUES (160819, 131065); -INSERT INTO cpe_cve ("cpe_id", "cve_id") VALUES (160820, 131065); -INSERT INTO cpe_cve ("cpe_id", "cve_id") VALUES (160821, 131065); -INSERT INTO cpe_cve ("cpe_id", "cve_id") VALUES (160822, 131065); -INSERT INTO cpe_cve ("cpe_id", "cve_id") VALUES (160823, 131065); -INSERT INTO cpe_cve ("cpe_id", "cve_id") VALUES (160824, 131065); -INSERT INTO cpe_cve ("cpe_id", "cve_id") VALUES (160825, 131065); -INSERT INTO cpe_cve ("cpe_id", "cve_id") VALUES (160826, 131065); -INSERT INTO cpe_cve ("cpe_id", "cve_id") VALUES (160827, 131065); -INSERT INTO cpe_cve ("cpe_id", "cve_id") VALUES (160828, 131065); -INSERT INTO cpe_cve ("cpe_id", "cve_id") VALUES (160829, 131065); -INSERT INTO cpe_cve ("cpe_id", "cve_id") VALUES (160830, 131065); -INSERT INTO cpe_cve ("cpe_id", "cve_id") VALUES (160831, 131065); -INSERT INTO cpe_cve ("cpe_id", "cve_id") VALUES (160832, 131065); -INSERT INTO cpe_cve ("cpe_id", "cve_id") VALUES (160833, 131065); -INSERT INTO cpe_cve ("cpe_id", "cve_id") VALUES (160834, 131065); -INSERT INTO cpe_cve ("cpe_id", "cve_id") VALUES (160835, 131065); -INSERT INTO cpe_cve ("cpe_id", "cve_id") VALUES (160836, 131065); -INSERT INTO cpe_cve ("cpe_id", "cve_id") VALUES (160837, 131065); -INSERT INTO cpe_cve ("cpe_id", "cve_id") VALUES (160838, 131065); -INSERT INTO cpe_cve ("cpe_id", "cve_id") VALUES (160839, 131065); -INSERT INTO cpe_cve ("cpe_id", "cve_id") VALUES (160840, 131065); -INSERT INTO cpe_cve ("cpe_id", "cve_id") VALUES (160841, 131065); -INSERT INTO cpe_cve ("cpe_id", "cve_id") VALUES (160842, 131065); -INSERT INTO cpe_cve ("cpe_id", "cve_id") VALUES (160843, 131065); -INSERT INTO cpe_cve ("cpe_id", "cve_id") VALUES (160844, 131065); -INSERT INTO cpe_cve ("cpe_id", "cve_id") VALUES (160845, 131065); -INSERT INTO cpe_cve ("cpe_id", "cve_id") VALUES (160846, 131065); -INSERT INTO cpe_cve ("cpe_id", "cve_id") VALUES (160847, 131065); -INSERT INTO cpe_cve ("cpe_id", "cve_id") VALUES (160848, 131065); -INSERT INTO cpe_cve ("cpe_id", "cve_id") VALUES (160849, 131065); -INSERT INTO cpe_cve ("cpe_id", "cve_id") VALUES (160850, 131065); -INSERT INTO cpe_cve ("cpe_id", "cve_id") VALUES (160851, 131065); -INSERT INTO cpe_cve ("cpe_id", "cve_id") VALUES (160852, 131065); -INSERT INTO cpe_cve ("cpe_id", "cve_id") VALUES (160853, 131065); -INSERT INTO cpe_cve ("cpe_id", "cve_id") VALUES (160854, 131065); -INSERT INTO cpe_cve ("cpe_id", "cve_id") VALUES (160855, 131065); -INSERT INTO cpe_cve ("cpe_id", "cve_id") VALUES (160856, 131065); -INSERT INTO cpe_cve ("cpe_id", "cve_id") VALUES (160857, 131065); -INSERT INTO cpe_cve ("cpe_id", "cve_id") VALUES (160858, 131065); -INSERT INTO cpe_cve ("cpe_id", "cve_id") VALUES (160859, 131065); -INSERT INTO cpe_cve ("cpe_id", "cve_id") VALUES (160860, 131065); -INSERT INTO cpe_cve ("cpe_id", "cve_id") VALUES (160862, 131065); -INSERT INTO cpe_cve ("cpe_id", "cve_id") VALUES (160863, 131065); -INSERT INTO cpe_cve ("cpe_id", "cve_id") VALUES (160864, 131065); -INSERT INTO cpe_cve ("cpe_id", "cve_id") VALUES (160865, 131065); -INSERT INTO cpe_cve ("cpe_id", "cve_id") VALUES (160866, 131065); -INSERT INTO cpe_cve ("cpe_id", "cve_id") VALUES (160867, 131065); -INSERT INTO cpe_cve ("cpe_id", "cve_id") VALUES (160868, 131065); -INSERT INTO cpe_cve ("cpe_id", "cve_id") VALUES (160869, 131065); -INSERT INTO cpe_cve ("cpe_id", "cve_id") VALUES (160870, 131065); -INSERT INTO cpe_cve ("cpe_id", "cve_id") VALUES (160871, 131065); -INSERT INTO cpe_cve ("cpe_id", "cve_id") VALUES (160872, 131065); -INSERT INTO cpe_cve ("cpe_id", "cve_id") VALUES (160873, 131065); -INSERT INTO cpe_cve ("cpe_id", "cve_id") VALUES (160874, 131065); -INSERT INTO cpe_cve ("cpe_id", "cve_id") VALUES (160875, 131065); -INSERT INTO cpe_cve ("cpe_id", "cve_id") VALUES (160876, 131065); -INSERT INTO cpe_cve ("cpe_id", "cve_id") VALUES (160877, 131065); -INSERT INTO cpe_cve ("cpe_id", "cve_id") VALUES (160879, 131065); -INSERT INTO cpe_cve ("cpe_id", "cve_id") VALUES (160880, 131065); -INSERT INTO cpe_cve ("cpe_id", "cve_id") VALUES (160881, 131065); -INSERT INTO cpe_cve ("cpe_id", "cve_id") VALUES (160882, 131065); -INSERT INTO cpe_cve ("cpe_id", "cve_id") VALUES (160883, 131065); -INSERT INTO cpe_cve ("cpe_id", "cve_id") VALUES (160884, 131065); -INSERT INTO cpe_cve ("cpe_id", "cve_id") VALUES (160885, 131065); -INSERT INTO cpe_cve ("cpe_id", "cve_id") VALUES (160886, 131065); -INSERT INTO cpe_cve ("cpe_id", "cve_id") VALUES (160887, 131065); -INSERT INTO cpe_cve ("cpe_id", "cve_id") VALUES (161218, 85525); -INSERT INTO cpe_cve ("cpe_id", "cve_id") VALUES (161218, 99297); diff --git a/pkg/models/tests/cve.sql b/pkg/models/tests/cve.sql index 224ac29..de26f34 100644 --- a/pkg/models/tests/cve.sql +++ b/pkg/models/tests/cve.sql @@ -1,40 +1,30 @@ -DROP TABLE IF EXISTS cve; -CREATE TABLE "cves" ( - "id" INTEGER, - "cve" TEXT NOT NULL UNIQUE , - "severity" TEXT, - "published" DATETIME , - "summary" TEXT(500), - "modified" DATETIME, - "match_criteria_ids" TEXT(500), - PRIMARY KEY ("id") -); -INSERT INTO cves (id, cve, severity, published, modified, summary, match_criteria_ids) VALUES (48612, 'CVE-2017-9302', 'MEDIUM', '2017-05-29', '2024-11-21', 'RealPlayer 16.0.2.32 allows remote attackers to cause a denial of service (divide-by-zero error and ...', '{7A5620A0-8DAF-4FE6-8955-FA4B96ACF955}'); -INSERT INTO cves (id, cve, severity, published, modified, summary, match_criteria_ids) VALUES (48614, 'CVE-2015-0269', 'MEDIUM', '2017-05-26', '2024-11-21', 'Directory traversal vulnerability in Contao before 3.2.19, and 3.4.x before 3.4.4 allows remote auth...', '{4F2A2A58-FA38-4930-86E3-07239AC98EE6,560647AE-9AA0-4A9F-AF6C-81CA20C4B120,E2D73046-F8FE-489F-850D-C01A2F20064C,102364AF-FC62-40D0-8318-EA2530D68F9D,342AC8F9-0F65-4901-AD0B-BFDA4EB57122,A753375D-F536-49B5-9476-F1C6D86BDCCA}'); -INSERT INTO cves (id, cve, severity, published, modified, summary, match_criteria_ids) VALUES (55512, 'CVE-2001-0128', 'HIGH', '2001-03-12', '2024-11-20', 'Zope before 2.2.4 does not properly compute local roles, which could allow users to bypass specified...', '{BAEE3A85-0A4C-4763-A141-AC27ECFDC2AA,A5AE3BF4-237D-4D84-9753-512A642141A0,C50F9824-A12E-488E-A735-14696E11F847,0C7B8C8F-0A2D-4C55-9648-DA2B583EBA44,612AC3B1-8E55-437F-9600-67EA1A8BAD48,537A5C29-D770-4755-A6AB-8916754E14DB,E3AC05A9-04DA-4ED3-94D8-3254384CB724,DCE4BBA3-7332-45EE-8C29-BE5A473B559D,58B90124-0543-4226-BFF4-13CCCBCCB243,32FCB0B3-8FBE-49FA-B17E-0D5462C9E5B4,3EC1FF5D-5EAB-44D5-B281-770547C70D68,0A8FBD5A-2FD0-43CD-AC4B-1D6984D336FE,2EC4D3AB-38FA-4D44-AF5C-2DCD15994E76,0633B5A6-7A88-4A96-9462-4C09D124ED36,29B186E5-7C2F-466E-AA4A-8F2B618F8A14}'); -INSERT INTO cves (id, cve, severity, published, modified, summary, match_criteria_ids) VALUES (61182, 'CVE-2010-3773', 'MEDIUM', '2010-12-10', '2024-11-21', 'Mozilla Firefox before 3.5.16 and 3.6.x before 3.6.13, and SeaMonkey before 2.0.11, when the XMLHttp...', '{F3782354-7EB7-49D2-B240-1871F6CB84C7,30D47263-03AD-4060-91E3-90F997B3D174,AFD775DF-277E-4D5B-B980-B8E6E782467D,C8587BFD-417D-42BE-A5F8-22FDC68FA9E6,D7364FAB-EEE9-4064-A8AD-6547239F9AB3,4C50485F-BC7B-4B70-A47B-1712E2DBAC5A,51EE386B-0833-484E-A2AB-86B4470D4D45,C3EF1B4D-6556-4B3C-BDD0-6348A4D4A91D,68C5C7CF-005B-42FC-B950-90303F0CC115,0B2FA2CF-7FE4-43B1-96A0-C14666EDBD7B,30290F6D-55CA-47EB-8F41-7BBB745C7A34,D6CD332E-490C-45B8-91BC-8A1DD1107F2E,09E18FC0-0C8C-4FA1-85B9-B868D00F002F,4A97B6E1-EABA-4977-A3FC-64DF0392AA95,CB01A97F-ACE1-4A99-8939-6DF8FE5B5E8E,6521C877-63C9-4B6E-9FC9-1263FFBB7950,D949DF0A-CBC2-40E1-AE6C-60E6F58D2481,3C5CDA57-1A50-4EDB-80E2-D3EBB44EA653,22D33486-4956-4E2C-BA16-FA269A9D02BD,3104343E-93B6-4D4A-BC95-ED9F7E91FB6A,381313EF-DF84-4F66-9962-DE8F45029D79,A0228476-14E4-443C-BBAE-2C9CD8594DC0,A803A500-DCE2-44FC-ABEB-A90A1D39D85C,022274DE-5251-49C9-B6E5-1D8CEDC34E7D,B9F84CB7-93F7-4912-BC87-497867B96491,8992E9C6-09B3-492E-B7DA-899D5238EC18,D58B704B-F06E-44C1-BBD1-A090D1E6583A,40270FBD-744A-49D9-9FFA-1DCD897210D7,20E01097-F60A-4FB2-BA47-84A267EE87D6,7F65732F-317B-49A2-B9B0-FA1102B8B45C,DB430F19-069A-43FD-9097-586D4449D327,76AD0439-3BFB-4AD1-8E2C-99D0B099FA8C,1E6D7528-E591-48A6-8165-BE42F8EBF6B6,BA710423-0075-44B8-9DCB-6380FA974486,C5521DA3-E6AF-4350-B971-10B4A1C9B1D1,DDD15752-A253-47B1-BCE0-B55B84B47C9F,60B39A9D-44A4-4D7F-9004-C44066BBE277,F203EC52-2126-4227-AF3B-23857E5BB222,E951567B-8402-42EA-AE33-EBA9235A868F,82A94198-7EBF-4D8A-A99A-A32A8561FF2F,1BFFBC58-ACD2-449D-B010-5026D6022F86,83EED5D2-EC40-4253-991B-0C746FBEF6A5,0F73092C-1458-4278-A30D-C0F89B1F82F6,AAB559BD-4BF7-417F-962F-B8971FF1614B,7B528A25-003F-4614-B55B-AF46B66EDB44,0078D890-6456-4F45-A3AE-B1A2BFAC6A4C,69DD17EC-99EB-46C1-98E9-16A2EDB8E224,F35F7EA1-8C98-4A3E-8767-89DBC26A32B9,EF89719E-C415-45A3-A1CC-FAFDFCAE3055,58EB8E8A-84DE-43AA-B8F0-B585FB73D724,C19C0BF7-390D-4E2E-BA32-28DFF73C55F6,5FE5E50C-80ED-4CA7-BC85-8BD2E324D527,FEBF912C-A12E-4DBD-84AC-8B440E190BCE,9B8EDED6-29EF-4A9F-955D-F5E6611C2141,EDC9C82D-586A-48F4-B540-1E2AE79806B3,51FCF83B-630A-4413-BFAA-0C24A6B8F4F4,84B2AA0A-0220-49DD-82CD-37FDC563F146,D754AF10-1E43-46C8-A444-E7DB3401509D,34182167-F1DF-455B-BFDB-0A8491590479,B8ECA6CE-20D0-4A4F-B376-888A9328B044,1FEFCAB0-E57A-46E8-94C7-8510BB87C6B2,9FB5C972-AF7B-4EC7-BCE5-867CACCF5C19,C68DBB31-7804-446E-9A53-073E4B74E851,31ADCC51-CE05-4EB6-BE8F-B64FD62946A1,387390AE-CF25-47ED-BD36-F42455DE1A4B,78D5F0AD-9974-40A1-942F-0F03A278DAD9,F368F41E-0371-4790-9197-61ED793022C8,7C7AA88B-638A-451A-B235-A1A1444BE417,9C01AD7C-8470-47AB-B8AE-670E3A381E89,7E43F2F1-9252-4B44-8A61-D05305915A5F,3BB9D48B-DC7B-4D92-BB26-B6DE629A2506,A360D595-A829-4DDE-932E-9995626917E5,6E9B5349-FAA7-4CDA-9533-1AD1ACDFAC4E,07243837-C353-4C25-A5B1-4DA32807E97D,B832C034-F793-415F-BFC8-D97A18BA6BC7,83CD1A13-66CB-49CC-BD84-5D8334DB774A,93C142C5-3A85-432B-80D6-2E7B1B4694F4,2434FCE7-A50B-4527-9970-C7224B31141C,5633FB6E-D623-49D4-9858-4E20E64DE458,429ECA02-DBCD-45FB-942C-CA4BC1BC8A72,B5F0DC80-5473-465C-9D7F-9589F1B78E12,567FF916-7DE0-403C-8528-7931A43E0D18,010B34F4-910E-4515-990B-8E72DF009578,8FAA1A89-E8D9-46D0-8E2C-9259920ACBFE,5A545A77-2198-4685-A87F-E0F2DAECECF6,438AACF8-006F-4522-853F-30DBBABD8C15,778FAE0C-A5CF-4B67-93A9-1A803E3E699F,E7447185-7509-449D-8907-F30A42CF7EB5,0EDBAC37-9D08-44D1-B279-BC6ACF126CAF,3FFF89FA-2020-43CC-BACD-D66117B3DD26,834BB391-5EB5-43A8-980A-D305EDAE6FA7,9A38AD88-BAA6-4FBE-885B-69E951BD1EFE,B500EE6C-99DB-49A3-A1F1-AFFD7FE28068,4F2938F2-A801-45E5-8E06-BE03DE03C8A7,F18A45C0-419C-4723-AB7D-5880EF668CE9,ABB88E86-6E83-4A59-9266-8B98AA91774D,E19ED1CA-DEBD-4786-BA7B-C122C7D2E5B7,66BE50FE-EA21-4633-A181-CD35196DF06E,7D6BF5B1-86D1-47FE-9D9C-735718F94874,84D15CE0-69DF-4EFD-801E-96A4D6AABEDB,CEE203DE-6C0E-4FDE-9C3A-0E73430F17DA,F2F38886-C25A-4C6B-93E7-36461405BA99,C65D2670-F37F-48CB-804A-D35BB1C27D9F,DE8E5194-7B34-4802-BDA6-6A86EB5EDE05,FABA5F56-99F7-4F8F-9CC1-5B0B2EB72922,2917BD67-CE81-4B94-B241-D4A9DDA60319,A524A94E-F19B-42B9-AA8E-171751C339AA,F71436CF-F756-44E0-8E69-6951F6B3E54A,582EE839-B83F-4908-9780-D0C92DC44FD0,824369CF-00A0-434E-94BC-71CA1317012C,BCB35099-B04E-4796-A25D-953329FE62F3,5DBEBCFD-80D6-466A-BAEF-C75E65A3B12E,C30ACBCA-4FA1-46DE-8F15-4830BC27E160,9453EF65-7C69-449E-BF7C-4FECFB56713E,4AA75825-21CF-475B-8040-126A13FA2216,CA97C80E-17FA-4866-86CE-29886145ED80,7DE24BED-202E-416D-B5F2-8207D97B9939,04198E04-CE1D-4A5A-A20C-D1E135B45F94,717DB967-F658-4699-A224-5B261BFEC10A,3487FA64-BE04-42CA-861E-3DAC097D7D32,F3D956DC-C73B-439F-8D79-8239207CC76F,57E2C7E7-56C0-466C-BB08-5EB43922C4F9,462E135A-5616-46CC-A9C0-5A7A0526ACC6,6121F9C1-F4DF-4AAB-9E51-AC1592AA5639,58D44634-A0B5-4F05-8983-B08D392EC742,EB3AC3D3-FDD7-489F-BDCF-BDB55DF33A8B,4105171B-9C90-4ABF-B220-A35E7BA9EE40,20985549-DB24-4B69-9D40-208A47AE658E,43A13026-416F-4308-8A1B-E989BD769E12,612B015E-9F96-4CE6-83E4-23848FD609E5,1E391619-0967-43E1-8CBC-4D54F72A85C2,0544D626-E269-4677-9B05-7DAB23BD103B,C95F7B2C-80FC-4DF2-9680-F74634DCE3E6,863C140E-DC15-4A88-AB8A-8AEF9F4B8164,38CD049A-5333-4FF7-AD34-6B74E19BADCB,0066576D-D66A-4B59-B5C3-471EEBEE8B9A,60ED6DAA-9194-4829-BC1A-00F04BE7930A,13BEB9A6-EFD5-4793-9603-84DB84F1CF7D,461163C6-4CA8-4BA9-95A1-136E612CBA6B,275E9D96-1290-44AB-BF9B-E9E4A803F593,412DF091-7604-4110-87A0-3488116A97E5,11E07FED-ABDB-4B0A-AB2E-4CBF1EAC4301,9A6558F1-9E0D-4107-909A-8EF4BC8A9C2F,63DF3D65-C992-44CF-89B4-893526C6242E,A9024117-2E8B-4240-9E21-CC501F3879B5,FBC3CAD3-2F54-4E32-A0C9-0D826C45AC23,52624B41-AB34-40AD-8709-D9646B618AB0,917E9856-9556-4FD6-A834-858F8837A6B4,98BBD74D-930C-4D80-A91B-0D61347BAA63,FAF2E696-883D-4DE5-8B79-D8E5D9470253,94E04FD9-38E8-462D-82C2-729F7F7F0465,5888517E-3C57-4A0A-9895-EA4BCB0A0ED5,0BB21291-B9F3-445E-A9E9-EA1822083DD3,D595F649-ECBE-45E0-8AAD-BCBC65A654B9,4FE6E920-9A4C-431B-89EA-683A22F15ACD,18B6CC9F-6295-4598-B28B-0CA19D1D9F45,C9F0434D-C84F-49FD-9F44-66D3ACD7B601,F6AAB416-E865-4EEE-8FCB-A91253BEB52B,76CD3BDF-A079-4EF3-ABDE-43CBDD08DB1F,031E8624-5161-43AF-AF19-6BAB5A94FDD8,54186D4A-C6F0-44AD-94FB-73B4346ABB6B,47E50AD9-BA35-4817-BD4D-5D678FC5A3C5,DD09DE40-8C9B-41EA-B372-9E4E4830E8F4,F223FB83-0EDB-4429-94B9-1AEEF314B73F,BC6B977F-292F-4981-95A0-6065A3C487D5,342226B9-2C0C-416C-81FE-19C49F03AA88,2A6A28E0-F67A-4275-B0D9-A02822E9EF7E,ECAB4696-76F3-458C-B33B-D7F8690C60A0,BBB444FD-15F3-4447-9EA8-1669779A5749,F92E2EF3-A612-476F-9D31-1EEC240C7EA7,0F175D30-2416-4172-BF11-DA78D252D608,5DD3F168-3EF4-492E-BBAA-EACB1357C709,4B46BA97-2860-45E4-9FD3-F418A202E4F0}'); -INSERT INTO cves (id, cve, severity, published, modified, summary, match_criteria_ids) VALUES (63264, 'CVE-2018-10083', 'HIGH', '2018-04-13', '2024-11-21', 'CMS Made Simple (CMSMS) through 2.2.7 contains an arbitrary file deletion vulnerability in the admin...', '{ABE080D4-548B-4AF1-9E61-9381338CC90C}'); -INSERT INTO cves (id, cve, severity, published, modified, summary, match_criteria_ids) VALUES (63265, 'CVE-2018-10029', 'MEDIUM', '2018-04-11', '2024-11-21', 'CMS Made Simple (aka CMSMS) 2.2.7 has Reflected XSS in admin/moduleinterface.php via the m1_name par...', '{ABE080D4-548B-4AF1-9E61-9381338CC90C}'); -INSERT INTO cves (id, cve, severity, published, modified, summary, match_criteria_ids) VALUES (63266, 'CVE-2018-10030', 'HIGH', '2018-04-11', '2024-11-21', 'CMS Made Simple (aka CMSMS) 2.2.7 has CSRF in admin/siteprefs.php.', '{ABE080D4-548B-4AF1-9E61-9381338CC90C}'); -INSERT INTO cves (id, cve, severity, published, modified, summary, match_criteria_ids) VALUES (68981, 'CVE-2018-18887', 'CRITICAL', '2018-11-01', '2024-11-21', 'S-CMS PHP 1.0 has SQL injection in member/member_news.php via the type parameter (aka the $N_type fi...', '{4B6BD148-38BC-4577-8467-2333C2466F90}'); -INSERT INTO cves (id, cve, severity, published, modified, summary, match_criteria_ids) VALUES (68982, 'CVE-2018-12243', 'HIGH', '2018-09-19', '2024-11-21', 'The Symantec Messaging Gateway product prior to 10.6.6 may be susceptible to a XML external entity (...', '{D25EDB76-F75D-4C5E-9122-EB4F520D569D}'); -INSERT INTO cves (id, cve, severity, published, modified, summary, match_criteria_ids) VALUES (68983, 'CVE-2018-12242', 'CRITICAL', '2018-09-19', '2024-11-21', 'The Symantec Messaging Gateway product prior to 10.6.6 may be susceptible to an authentication bypas...', '{D25EDB76-F75D-4C5E-9122-EB4F520D569D}'); -INSERT INTO cves (id, cve, severity, published, modified, summary, match_criteria_ids) VALUES (71233, 'CVE-2015-6175', 'HIGH', '2015-12-09', '2024-11-21', 'The kernel in Microsoft Windows 10 Gold allows local users to gain privileges via a crafted applicat...', '{542DAEEC-73CC-46C6-A630-BF474A3446AC}'); -INSERT INTO cves (id, cve, severity, published, modified, summary, match_criteria_ids) VALUES (71530, 'CVE-2008-3104', 'MEDIUM', '2008-07-09', '2024-11-21', 'Multiple unspecified vulnerabilities in Sun Java Runtime Environment (JRE) in JDK and JRE 6 before U...', '{7E7CD268-A083-43B5-80B7-B7837202CF29,94A87B01-2F20-4E1C-8572-395A96C35D79,BC9476DD-9B56-4811-A248-711C25181F29,6BB00A29-FEBB-4139-9E96-691EC1410EFE,DD8CC179-F76E-4CC2-9CBD-69CBBA5BD532,C2DC7389-9697-4EF0-9C4E-153731CDD75D,C5F476C8-5466-4E6B-B73B-4ACFBB02AD5C,D8C7C8C1-AA0D-4BD9-A8EC-85BBE627DE13,BAF0844B-ECB1-4AF0-AA32-1B8789AC5042,25322D24-C5D9-43A6-87CC-1BF7FA6A3E76,400FDCDE-16DE-4BD6-81E2-4A5DA12E99CA,82C49C78-ACE3-407D-AE21-EA180633C437,5F91F8A2-D473-48DC-81DA-21291DE7B6E8,3E46B3B4-9E1C-4C87-A4CD-C4CE7FBCA7F6,0F69C703-8541-4AA8-A66A-0292E0FCB749,99E08AB2-49AD-42C6-967F-773F2C6E188A,9459F130-A3DD-4A4E-9582-4FB82619EB5A,9C9F6EA8-6A88-4485-89A3-0FDF84AB51DA,67E0818A-3675-4293-89FE-5001E36C0F38,95112B98-B6B2-43FA-BF76-F518649CF3BE,3A18341A-3688-48E7-95AD-283EC9C95B4A,E301C59A-47F5-4861-9091-D0002CBA5B7A,AAB87D43-2860-43DD-94EE-886D7D75A351,399B06AC-E101-48EE-A362-D75F7072FF5E,FD3AC618-7B66-4167-ABE5-87BE6907FB5A,2B0EAF17-18D3-45F2-9B6F-66BEC0F49FB6,5F861B32-B878-4DFC-A9D1-350B1013AA1F,5A469586-4106-48BB-BF92-8FFDC8AA4C44,89E95205-DB64-44AD-81A4-B77BD7595AAF,62E772B9-8E41-476F-81F5-87B41F1827A1,7CE78463-2CE8-43C6-BB06-AA40C72B1A4F,31A04480-92DF-49AD-9B36-7F1FCB29DE90,E2FD0B72-683D-4FF6-BCF5-5DE85BF3064B,F78CD4B5-4B1D-4128-8AEA-2F967C38C6C4,62CAA3E7-9D65-48F3-ACF7-9D705D94DE54,477C310B-50AD-4D40-8EDB-4A80F0BF321D,60A1F526-6B28-47A3-8D2C-06CA067E9164,17F09D9E-B04B-477E-86E6-E1B1F9650973,6F929C59-9602-4962-95B4-4165D66E5935,E8B76949-9282-44D0-8075-74E482CE9A82,B9B072DD-FC4F-4E07-9837-0E16017CA4AB,969BE4EC-4D13-4B74-8137-FA0F83F0FDC3,81F47561-F59C-4904-8E05-D8A9629405A8,D5E6F92A-FC59-4CE7-B7F8-94CBF3DC8F21,496901D5-014D-4920-A343-91A56F6FEFA0,1EEAB662-644A-4D7B-8237-64142CF48724,D9598A49-95F2-42DB-B92C-CD026F739B83,BED1009E-AE60-43A0-A0F5-38526EFCF423,D011585C-0E62-4233-85FA-F29A07D68DA7,F226D898-F0E8-41D8-BF40-54DE9FB5426D,4CB9CCD1-A67D-4800-9EC5-6E1A0B0B76E7,CE28C283-447A-4F83-B96B-69F96E663C1C,D102063B-2434-4141-98E7-2DE501AE1728,03B8CD03-CD31-4F4D-BA90-59435578A4F9,41A994BF-1F64-480A-8AA5-748DDD0AB68C,88519F2D-AD06-4F05-BEDA-A09216F1B481,AC728978-368D-4B36-B149-70473E92BD1B,FD5187B1-CB86-48E8-A595-9FCFD9822C0C,6C660DE4-543A-4E9B-825D-CD099D08CBD8,98C1942E-16C0-4EB2-AB57-43EC6EC9C3A2,318719C9-7B01-4021-B2EF-8341254DFE6A,DB8FA9BA-51CA-4473-9FE1-9A32FB8C8041,6718104E-82B3-4160-9968-4980C309EC8B,34710306-D6CF-4D07-84BF-71A8839BE416,87BF46A9-8E4A-4583-B35F-052FD481DF66,32B351BB-6CA6-4CEF-9F5D-ED47774FC676,CDA40FCD-1D34-4C47-908F-697433236153,00639A84-BD03-4BD9-A655-F806693DBC8B,14824B23-FF9F-4D6D-9D02-12B79BE346A0,6493744C-A69D-4377-937E-85E7F5535EA9,C09019B1-B873-41CE-951E-4777F324729C,EC4209A0-E73F-4B5A-9925-B5D20F879455,297DF5AD-FC22-432B-AE6A-2B1E6CFE1BE4,BFB8516D-03C4-478D-AFE2-824867FDC739,F82AED17-FEC3-47D0-A395-26ACD07FBE52,9630BC7B-9039-4FA6-86F8-5274783F3EB1,F1A6A15C-216A-42B1-84EF-B3D9A313D4A2,EC39C819-9439-4029-8377-F6D58B3DFDFB,A053DEF6-1317-4DA8-91D7-E1970DA62351,F0DBFDD8-40AE-44F2-8F02-FB7A4FAE5235,EB0605FF-3DDC-4F3A-8171-F3A447E9C292,801FF3B4-0729-4710-BFC2-4B078029944F,8EB8591E-3D6E-489B-B0D6-CEBB9D09EA68,8A411676-6666-4B54-A008-443B9B42F670,0AEDC9B2-8AA6-4DA2-A187-49A1DD106725,002CA86D-3090-4C7A-947A-21CB5D1ADD98,E6C4CA79-9D0A-4E47-A1A4-9CBEDDCFE05E,AF4E34FD-D927-42BB-8A16-031D77CB4B9E,37A3D49A-BE20-47BF-A85F-122357BAB098,F45DB5D3-7F35-4531-9A82-24EB50034787,4695F707-12E8-4BA4-BBE1-C21CB7213A2A,C918FB49-DA13-4326-BE86-6F6BEA4CE4E1,5573CAD1-39D1-4ADB-BB95-EBB554B43B4E,DD02EBDF-6E51-4538-9EDD-B1DE914D09C9,53C3C0E3-5F40-412B-A4AD-A7A291DE2A08,36888382-79C8-4C97-A654-C668CD68556F,F34C99E6-F9F0-4EF3-8601-B47EAE3D7273,A74DD08D-CEDB-460E-BED5-78F6CAF18BF5,E60560EC-6DBD-4A17-BFFA-FAD9193A0BC7,E4F64FBC-DC97-4FE3-A235-18B87945AF7A,85048406-9051-4E69-94A8-5C449F3B89E7,B1C88DD7-0B46-4405-BD35-60D27E2DBA14}'); -INSERT INTO cves (id, cve, severity, published, modified, summary, match_criteria_ids) VALUES (73992, 'CVE-2006-3359', 'HIGH', '2006-07-06', '2024-11-21', 'Multiple SQL injection vulnerabilities in index.php in NewsPHP 2006 PRO allow remote attackers to in...', '{B67A384A-1976-4A28-AFCD-AE1E3F383BF6}'); -INSERT INTO cves (id, cve, severity, published, modified, summary, match_criteria_ids) VALUES (74684, 'CVE-2006-1888', 'MEDIUM', '2006-04-20', '2024-11-21', 'phpGraphy 0.9.11 and earlier allows remote attackers to bypass authentication and gain administrator...', '{93CB15FA-0081-4273-B158-FB1B6AFDB9DC,F83775BB-7D82-4E5F-9501-EF405F246BDC,63F46B5E-2D7A-46FB-87FE-CB866341C9B1}'); -INSERT INTO cves (id, cve, severity, published, modified, summary, match_criteria_ids) VALUES (79792, 'CVE-2016-3218', 'HIGH', '2016-06-16', '2024-11-21', 'The kernel-mode drivers in Microsoft Windows Vista SP2, Windows Server 2008 SP2 and R2 SP1, Windows ...', '{21540673-614A-4D40-8BD7-3F07723803B0,232581CC-130A-4C62-A7E9-2EC9A9364D53,7519928D-0FF2-4584-8058-4C7764CD5671,A7F51B5F-AA19-4D31-89FA-6DFAC4BA8F0F,197E82CB-81AF-40F1-A55C-7B596891A783,0C28897B-044A-447B-AD76-6397F8190177,2ACA9287-B475-4AF7-A4DA-A7143CEF9E57,A7DF96F8-BA6A-4780-9CA3-F719B3F81074,DB18C4CE-5917-401E-ACF7-2747084FD36E,0A0D2704-C058-420B-B368-372D1129E914}'); -INSERT INTO cves (id, cve, severity, published, modified, summary, match_criteria_ids) VALUES (80808, 'CVE-2013-1315', 'HIGH', '2013-09-11', '2024-11-21', 'Microsoft SharePoint Server 2007 SP3, 2010 SP1 and SP2, and 2013; Office Web Apps 2010; Excel 2003 S...', '{CEBB33CD-CACF-4EB8-8B5F-8E1CB8D7A440,94F5E2F8-0D37-4FCC-B55A-9F09C421272C,96EBA20F-201E-43AA-9F83-B73FB31696C6,5E01525C-A3AB-4AB7-82F9-B91E4D552FD7,3C4CFF7E-7170-4A6B-9A59-9815EE896C62,0390EFCA-87B4-42D6-817A-603765F49816,08795370-2A25-4F0D-970D-9B087F980BBD,78F27907-6FAB-4A9D-B100-B3D170520A74,971EC323-267F-4DAF-BA3B-10A47A9F1ADA,0D84FC39-29AA-4EF2-ACE7-E72635126F2B,44BC7B7B-7191-431C-8CAE-83B3F0EFF03E,0C86EA4A-7108-4A3A-A447-19CB3CA76B08,0C86EA4A-7108-4A3A-A447-19CB3CA76B08,81443CAD-F47E-4FD1-8E0E-8D646C90E4E3,D133FB73-C7F6-481C-B050-C242C771ED21,6B7AEA5E-C3D7-4E6D-96F0-5F9A175631C9,6FA65D4A-00C8-47E2-AF9F-6B420017CD29,9A57C675-05A9-4BC2-AE95-7CA5CA6B1F73,858F70F4-3128-477D-ACAA-73F0AFA23A2B,55C05DB1-03DC-454B-85E5-715938F0E13E,343EEB54-C1B1-4D7B-8780-5B5A5F2F840C,A8235774-4B57-4793-BE26-2CDE67532EDD}'); -INSERT INTO cves (id, cve, severity, published, modified, summary, match_criteria_ids) VALUES (80809, 'CVE-2013-1313', 'HIGH', '2013-02-13', '2024-11-21', 'Object Linking and Embedding (OLE) Automation in Microsoft Windows XP SP3 does not properly allocate...', '{CE477A73-4EE4-41E9-8694-5A3D5DC88656}'); -INSERT INTO cves (id, cve, severity, published, modified, summary, match_criteria_ids) VALUES (80810, 'CVE-2013-1312', 'HIGH', '2013-05-15', '2024-11-21', 'Use-after-free vulnerability in Microsoft Internet Explorer 9 and 10 allows remote attackers to exec...', '{C043EDDD-41BF-4718-BDCF-158BBBDB6360,D5808661-A082-4CBE-808C-B253972487B4}'); -INSERT INTO cves (id, cve, severity, published, modified, summary, match_criteria_ids) VALUES (80811, 'CVE-2013-1311', 'HIGH', '2013-05-15', '2024-11-21', 'Use-after-free vulnerability in Microsoft Internet Explorer 8 allows remote attackers to execute arb...', '{A52E757F-9B41-43B4-9D67-3FEDACA71283}'); -INSERT INTO cves (id, cve, severity, published, modified, summary, match_criteria_ids) VALUES (85525, 'CVE-2006-2656', 'HIGH', '2006-05-30', '2024-11-21', 'Stack-based buffer overflow in the tiffsplit command in libtiff 3.8.2 and earlier might might allow ...', '{36B8B853-0FF0-4E2F-983D-683A0951CEF3,CCA5EEB8-9D2C-49A9-BB08-CE5017B79D81,261FAE51-5207-4136-9FFE-2330A281266C,B32C83B9-F7DA-450A-A687-9A73734CD712,9485283A-B73E-4567-914A-42A86F5FFCB4,95892168-0FB6-4E3F-9303-2F9B3CF60D2B,A5021564-5E0A-4DDC-BC68-200B6050043E,11C50750-FE1D-42BA-9125-7D8E872AA2DB,19AA66E5-FDDD-4243-B945-DFEBDD25F258,62F359CD-5DC4-4919-B8E1-95BDDBD27EFC,D2C8C550-3313-4266-B4B3-E9E9047CFE04,ABEEBA7B-81D5-4148-912B-9AD448BBE741,448555FE-8E91-4EA7-BA05-6915F5508319,44BC5E2C-B6A6-4999-A1EA-B91DA5C350C7,F2850FD9-8BE8-410E-8A24-28549DAACEB3}'); -INSERT INTO cves (id, cve, severity, published, modified, summary, match_criteria_ids) VALUES (93681, 'CVE-2018-13895', 'HIGH', '2019-05-24', '2024-11-21', 'Due to the missing permissions on several content providers of the RCS app in its android manifest f...', '{4E2F2D26-2833-45A4-81F0-8E9F338C1E13,4EB171B1-D163-4801-A241-8DD7193A5DCB,A960B86A-C397-4ACB-AEE6-55F316D32949,D79B8959-3D1E-4B48-9181-D75FE90AAF98,A35FECFB-60AE-42A8-BCBB-FEA7D5826D49,E9765187-8653-4D66-B230-B2CE862AC5C0,35B7E25E-FA92-4C36-883C-CFF36F4B3507,ECD99C6F-2444-4A5E-A517-0C8023DDF23D,FE28A59C-7AA6-4B85-84E8-07852B96108E,5DEE828B-09A7-4AC1-8134-491A7C87C118,8CA1E7B0-782B-4757-B118-802943798984,95CB08EC-AE12-4A54-AA3C-998F01FC8763,B05FD66D-13A6-40E9-A64B-E428378F237E,D0D665C1-3EBA-42F2-BF56-55E6C365F7DF,F18CD1F1-C36A-4840-88CD-8F00BD68EF1A,6A01800E-994E-4095-AD86-F02DC9D9C86E,0FA80D57-3191-47CF-AD3F-9F2D64E443FE,B2AFB212-F01A-4CEB-8DB4-2E0CC2308CB6,E0986EF1-0974-488E-84C4-6880F876CE55,8C08BA58-2EBC-4A22-85A4-2ECD54693B9B,27110478-4C08-49E6-BD53-8BAAD9D5BD65,3664D302-D22A-4B25-B534-3097AE2F8573,C56BC939-2FE8-4AB4-B638-35C83B224005,E36C12E2-7064-41E6-B357-3F0E6E6D0A0F,8DE3EA03-0373-4FEF-B1FC-123A8073520B,A64D3E69-0784-4DEA-96C1-2D41EAFA1906,B11CE0F1-29BD-46E1-ACFE-D076192F138E,D205DB4E-68C2-4B13-8373-128870DF83D8,E07C621F-0BC0-40C1-9678-1AF6498AC487,9C621A62-E346-406B-9D20-8FF6C2B0851F,549E6F7E-A54F-423F-BD4A-A8FB97DBD39E,992C3835-7183-4D96-8647-DD9916880323,A7B95CCC-37F1-4768-8D64-CA2028E93E03,D1426161-4F7C-44B1-AA9E-EA661AA68947,ECF81213-DE2D-4C4B-99E8-71AFD87E92CD,95E826EF-343B-47FA-AB54-F13E868CE6A7,06E0CC35-AC20-42D7-8FEA-CA4685E33E72,4A2C4DED-2367-4736-A0AF-C8356F1271AD,F2126866-3B02-42B4-A57A-4EFF30848B55,F832FE19-8D65-4779-B6F5-BD90BD131FD4,CE94E380-CB75-462E-B411-BF38F17D53B2,0947F38F-3DC2-45F1-B3B3-963922F32054,BC1650DB-FDF8-4BE5-9437-8ADA11A07116,B51DD51F-4BDE-497B-89E5-551D10CF3442,0752054B-2C29-4490-ADC8-29F82BAA17E6,005038B5-BCB7-4A23-8562-ACEF6E156C1F,6BFF8872-645F-4A05-BAF9-7797CFBE37C6,9CB91AFF-C149-4F5C-92EC-E78E66935528,2B529780-DB0A-4F9C-AE63-6DEC593B86E5,669E7360-E8C3-4BB8-A3B6-61BD58AFAF62,D49606C5-7306-4F33-864C-C1905594F09C,B43964AF-7CEC-420A-935B-D3895B2BAC70,E077FC03-F86F-417A-A3E6-BC88CB85C6F0,E016356C-94ED-4CDD-8351-97D265FE036E,E08016A2-E4FE-4E9C-A915-C66BE157AFB5,018452D0-007C-4740-B2AF-E5C8BBAC310F,1CFF35A3-1472-4665-9DAB-1ABC45C0D5B4,F930E9BF-C502-49C6-8BE8-9A711B89FA1B,0A2D2B3B-CB28-46AA-9117-A7FA371FDE80,DE18BF66-B0DB-48BB-B43A-56F01821F5A3,0C10C7CB-3B66-4F17-8146-6A85611E2BA9,B9DA765F-53DE-4FB0-B825-6C11B3177641,91400943-3D25-4E44-9FFD-9E3076305D80,57B16867-710D-4748-8636-635E2C6F7389,A2326BD7-28A5-4244-8501-B109913E7AE6,532D244B-8B5A-4923-B7F1-9DC0A5FC0E9D,84289E6D-DA2A-4D04-9DDA-E8C46DDDD056,C0B56360-7AC3-410A-B7F8-1BE8514B3781,8EA0D645-80F6-48C3-AF0D-99198ADC8778,814FF3F3-CD5A-45A3-988C-6457D2CEB48C,24D7B67C-6FEC-48F8-9D46-778E4528BC20,05006807-D961-446C-B8DC-C87507F1316E,A0CE1B23-6FE3-41C4-B264-C7A9E8BDBEC1,794BA13C-3C63-4695-AA45-676F85D904BE}'); -INSERT INTO cves (id, cve, severity, published, modified, summary, match_criteria_ids) VALUES (99297, 'CVE-2018-14788', 'MEDIUM', '2018-10-01', '2024-11-21', 'Fuji Electric Alpha5 Smart Loader Versions 3.7 and prior. A buffer overflow information disclosure v...', '{4494AD60-80C3-4B40-87A8-4D119AB77C69,5319594A-AD04-4A71-875A-16EE68D28661}'); -INSERT INTO cves (id, cve, severity, published, modified, summary, match_criteria_ids) VALUES (108629, 'CVE-2019-15222', 'MEDIUM', '2019-08-19', '2024-11-21', 'An issue was discovered in the Linux kernel before 5.2.8. There is a NULL pointer dereference caused...', '{4D264E92-50E9-46B2-8633-23B9F861EEDA,234DEFE0-5CE5-4B0A-96B8-5D227CB8ED31,CDDF61B7-EC5C-467C-B710-B89F502CD04F,3A756737-1CC4-42C2-A4DF-E1C893B4E2D5,0EF46487-B64A-454E-AECC-D74B83170ACD,D6D700C5-F67F-4FFB-BE69-D524592A3D2E,090AA6F4-4404-4E26-82AB-C3A22636F276,F1E78106-58E6-4D59-990F-75DA575BFAD9,B620311B-34A3-48A6-82DF-6F078D7A4493}'); -INSERT INTO cves (id, cve, severity, published, modified, summary, match_criteria_ids) VALUES (116241, 'CVE-2020-5603', 'HIGH', '2020-06-30', '2024-11-21', 'Uncontrolled resource consumption vulnerability in Mitsubishi Electoric FA Engineering Software (CPU...', '{5AA4BCF9-CE1B-4A53-BBBD-396FE7D8D410,892E3CDC-AFC4-4EF1-AF46-3F161603DDB1,AD8B6AFD-17BE-4657-9F55-B0CA52E2578A,567CE406-0FCE-44DC-B210-1E54EDB6FE11,591B76E1-665F-4473-8A65-B8549B61807F,7CCB1E6D-333D-458E-AE2D-974E16195811,20F14A8B-E42D-4621-8BCC-A6D28A8A0D7A,35D76E9B-394E-47A1-B6F1-4854909A8D59,37B4823F-E257-4CFF-A20B-FAB4A60D49D9,4116C452-19C3-4F48-8A05-864BD884BDD0,BB41FBDD-2785-4012-AB84-2B1F947E9512,6DBBC676-19E1-4780-8D23-6888884E67A4,56B1A257-F1C6-4213-92A0-7476E3EB6207,76A6CCE9-ACB8-4A24-A4E5-0F8DCBC4475B,DA012067-3CF9-46E8-9C5D-C64D92C2574D,19CEBFB8-E23E-4ABB-9337-221D6749D456,6998E84B-0EFC-4ACB-BFC6-FFC1A675F1B3,0303271B-F016-4D0E-A862-313A31B8CD60,5BD4EC4A-ACF7-45F2-893D-569B4F8F8909,5E66C5F1-23BF-42F9-8A25-FE8A7E66B07D}'); -INSERT INTO cves (id, cve, severity, published, modified, summary, match_criteria_ids) VALUES (117075, 'CVE-2020-1301', 'HIGH', '2020-06-09', '2024-11-21', 'A remote code execution vulnerability exists in the way that the Microsoft Server Message Block 1.0 ...', '{21540673-614A-4D40-8BD7-3F07723803B0,E01A4CCA-4C43-46E0-90E6-3E4DBFBACD64,83B14968-3985-43C3-ACE5-8307196EFAE3,7CB85C75-4D35-480E-843D-60579EC75FCB,6B8F3DD2-A145-4AF1-8545-CC42892DA3D1,3FB5CDAE-C713-4D9D-9D6A-2C2E8924A4BB,E9273B95-20ED-4547-B0A8-95AD15B30372,AAE74AF3-C559-4645-A6C0-25C3D647AAC8,C2B1C231-DE19-4B8F-A4AA-5B3A65276E46,E93068DB-549B-45AB-8E5C-00EB5D8B5CF8,C6CE5198-C498-4672-AF4C-77AB4BE06C5C,5F422A8C-2C4E-42C8-B420-E0728037E15C,B320A104-9037-487E-BC9A-62B4A6B49FD0,AF07A81D-12E5-4B1D-BFF9-C8D08C32FF4F,A7DF96F8-BA6A-4780-9CA3-F719B3F81074,DB18C4CE-5917-401E-ACF7-2747084FD36E,041FF8BA-0B12-4A1F-B4BF-9C4F33B7C1E7,CAACE735-003E-4ACB-A82E-C0CF97D7F013,5B921FDB-8E7D-427E-82BE-4432585080CF,C253A63F-03AB-41CB-A03A-B2674DEA98AA,0B60D940-80C7-49F0-8F4E-3F99AC15FA82,DB79EE26-FC32-417D-A49C-A1A63165A968}'); -INSERT INTO cves (id, cve, severity, published, modified, summary, match_criteria_ids) VALUES (131065, 'CVE-2007-5326', 'HIGH', '2007-10-13', '2024-11-21', 'Multiple buffer overflows in (1) RPC and (2) rpcx.dll in CA BrightStor ARCServe BackUp v9.01 through...', '{F52790F8-0D23-47F4-B7F7-6CB0F7B6EA14,E37161BE-6AF5-40E0-BD63-2C17431D8B36,477EE032-D183-478F-A2BF-6165277A7414,78AA54EA-DAF1-4635-AA1B-E2E49C4BB597,328E1C42-488A-43FC-8DF2-758DC73B74AF,A8781759-7B4C-47C3-8A60-8CA5520360C5,6E236148-4A57-4FDC-A072-A77D3DD2DB53,1366038C-7552-44C7-BB01-316AA0D088F9,D24EEBF9-8301-4E8E-8AE1-E41774EDEFD9}'); -INSERT INTO cves (id, cve, severity, published, modified, summary, match_criteria_ids) VALUES (142125, 'CVE-2020-9248', 'MEDIUM', '2020-07-31', '2024-11-21', 'Huawei FusionComput 8.0.0 have an improper authorization vulnerability. A module does not verify som...', '{5D251AD0-6227-4190-815F-B526F40D8A43}'); -INSERT INTO cves (id, cve, severity, published, modified, summary, match_criteria_ids) VALUES (155966, 'CVE-2022-26417', 'HIGH', '2022-04-01', '2024-11-21', 'Omron CX-Position (versions 2.5.3 and prior) is vulnerable to a use after free memory condition whil...', '{7D8E2155-0F09-4E95-8D64-3E2D779191F3}'); -INSERT INTO cves (id, cve, severity, published, modified, summary, match_criteria_ids) VALUES (155978, 'CVE-2017-5095', 'HIGH', '2017-10-27', '2024-11-21', 'Stack overflow in PDFium in Google Chrome prior to 60.0.3112.78 for Linux, Windows, and Mac allowed ...', '{6E6FC5B1-DB09-4BF0-88CA-E5E2C42FAA37,387021A0-AF36-463C-A605-32EA7DAC172E,703AF700-7A70-47E2-BC3A-7FD03B3CA9C1,A2572D17-1DE6-457B-99CC-64AFD54487EA,DEECE5FC-CACF-4496-A3E7-164736409252,EE249E1B-A1FD-4E08-AA71-A0E1F10FFE97,9BBCD86A-E6C7-4444-9D74-F861084090F0,E5ED5807-55B7-47C5-97A6-03233F4FBC3A}'); +-- Test data only. The schema comes from testSchemaDDL in pkg/models/test_schema.go; do not add DDL here. +INSERT INTO cves (cve, severity, published, modified, summary, match_criteria_ids) VALUES ('CVE-2017-9302', 'MEDIUM', '2017-05-29', '2024-11-21', 'RealPlayer 16.0.2.32 allows remote attackers to cause a denial of service (divide-by-zero error and ...', '{7A5620A0-8DAF-4FE6-8955-FA4B96ACF955}'); +INSERT INTO cves (cve, severity, published, modified, summary, match_criteria_ids) VALUES ('CVE-2015-0269', 'MEDIUM', '2017-05-26', '2024-11-21', 'Directory traversal vulnerability in Contao before 3.2.19, and 3.4.x before 3.4.4 allows remote auth...', '{4F2A2A58-FA38-4930-86E3-07239AC98EE6,560647AE-9AA0-4A9F-AF6C-81CA20C4B120,E2D73046-F8FE-489F-850D-C01A2F20064C,102364AF-FC62-40D0-8318-EA2530D68F9D,342AC8F9-0F65-4901-AD0B-BFDA4EB57122,A753375D-F536-49B5-9476-F1C6D86BDCCA}'); +INSERT INTO cves (cve, severity, published, modified, summary, match_criteria_ids) VALUES ('CVE-2001-0128', 'HIGH', '2001-03-12', '2024-11-20', 'Zope before 2.2.4 does not properly compute local roles, which could allow users to bypass specified...', '{BAEE3A85-0A4C-4763-A141-AC27ECFDC2AA,A5AE3BF4-237D-4D84-9753-512A642141A0,C50F9824-A12E-488E-A735-14696E11F847,0C7B8C8F-0A2D-4C55-9648-DA2B583EBA44,612AC3B1-8E55-437F-9600-67EA1A8BAD48,537A5C29-D770-4755-A6AB-8916754E14DB,E3AC05A9-04DA-4ED3-94D8-3254384CB724,DCE4BBA3-7332-45EE-8C29-BE5A473B559D,58B90124-0543-4226-BFF4-13CCCBCCB243,32FCB0B3-8FBE-49FA-B17E-0D5462C9E5B4,3EC1FF5D-5EAB-44D5-B281-770547C70D68,0A8FBD5A-2FD0-43CD-AC4B-1D6984D336FE,2EC4D3AB-38FA-4D44-AF5C-2DCD15994E76,0633B5A6-7A88-4A96-9462-4C09D124ED36,29B186E5-7C2F-466E-AA4A-8F2B618F8A14}'); +INSERT INTO cves (cve, severity, published, modified, summary, match_criteria_ids) VALUES ('CVE-2010-3773', 'MEDIUM', '2010-12-10', '2024-11-21', 'Mozilla Firefox before 3.5.16 and 3.6.x before 3.6.13, and SeaMonkey before 2.0.11, when the XMLHttp...', '{F3782354-7EB7-49D2-B240-1871F6CB84C7,30D47263-03AD-4060-91E3-90F997B3D174,AFD775DF-277E-4D5B-B980-B8E6E782467D,C8587BFD-417D-42BE-A5F8-22FDC68FA9E6,D7364FAB-EEE9-4064-A8AD-6547239F9AB3,4C50485F-BC7B-4B70-A47B-1712E2DBAC5A,51EE386B-0833-484E-A2AB-86B4470D4D45,C3EF1B4D-6556-4B3C-BDD0-6348A4D4A91D,68C5C7CF-005B-42FC-B950-90303F0CC115,0B2FA2CF-7FE4-43B1-96A0-C14666EDBD7B,30290F6D-55CA-47EB-8F41-7BBB745C7A34,D6CD332E-490C-45B8-91BC-8A1DD1107F2E,09E18FC0-0C8C-4FA1-85B9-B868D00F002F,4A97B6E1-EABA-4977-A3FC-64DF0392AA95,CB01A97F-ACE1-4A99-8939-6DF8FE5B5E8E,6521C877-63C9-4B6E-9FC9-1263FFBB7950,D949DF0A-CBC2-40E1-AE6C-60E6F58D2481,3C5CDA57-1A50-4EDB-80E2-D3EBB44EA653,22D33486-4956-4E2C-BA16-FA269A9D02BD,3104343E-93B6-4D4A-BC95-ED9F7E91FB6A,381313EF-DF84-4F66-9962-DE8F45029D79,A0228476-14E4-443C-BBAE-2C9CD8594DC0,A803A500-DCE2-44FC-ABEB-A90A1D39D85C,022274DE-5251-49C9-B6E5-1D8CEDC34E7D,B9F84CB7-93F7-4912-BC87-497867B96491,8992E9C6-09B3-492E-B7DA-899D5238EC18,D58B704B-F06E-44C1-BBD1-A090D1E6583A,40270FBD-744A-49D9-9FFA-1DCD897210D7,20E01097-F60A-4FB2-BA47-84A267EE87D6,7F65732F-317B-49A2-B9B0-FA1102B8B45C,DB430F19-069A-43FD-9097-586D4449D327,76AD0439-3BFB-4AD1-8E2C-99D0B099FA8C,1E6D7528-E591-48A6-8165-BE42F8EBF6B6,BA710423-0075-44B8-9DCB-6380FA974486,C5521DA3-E6AF-4350-B971-10B4A1C9B1D1,DDD15752-A253-47B1-BCE0-B55B84B47C9F,60B39A9D-44A4-4D7F-9004-C44066BBE277,F203EC52-2126-4227-AF3B-23857E5BB222,E951567B-8402-42EA-AE33-EBA9235A868F,82A94198-7EBF-4D8A-A99A-A32A8561FF2F,1BFFBC58-ACD2-449D-B010-5026D6022F86,83EED5D2-EC40-4253-991B-0C746FBEF6A5,0F73092C-1458-4278-A30D-C0F89B1F82F6,AAB559BD-4BF7-417F-962F-B8971FF1614B,7B528A25-003F-4614-B55B-AF46B66EDB44,0078D890-6456-4F45-A3AE-B1A2BFAC6A4C,69DD17EC-99EB-46C1-98E9-16A2EDB8E224,F35F7EA1-8C98-4A3E-8767-89DBC26A32B9,EF89719E-C415-45A3-A1CC-FAFDFCAE3055,58EB8E8A-84DE-43AA-B8F0-B585FB73D724,C19C0BF7-390D-4E2E-BA32-28DFF73C55F6,5FE5E50C-80ED-4CA7-BC85-8BD2E324D527,FEBF912C-A12E-4DBD-84AC-8B440E190BCE,9B8EDED6-29EF-4A9F-955D-F5E6611C2141,EDC9C82D-586A-48F4-B540-1E2AE79806B3,51FCF83B-630A-4413-BFAA-0C24A6B8F4F4,84B2AA0A-0220-49DD-82CD-37FDC563F146,D754AF10-1E43-46C8-A444-E7DB3401509D,34182167-F1DF-455B-BFDB-0A8491590479,B8ECA6CE-20D0-4A4F-B376-888A9328B044,1FEFCAB0-E57A-46E8-94C7-8510BB87C6B2,9FB5C972-AF7B-4EC7-BCE5-867CACCF5C19,C68DBB31-7804-446E-9A53-073E4B74E851,31ADCC51-CE05-4EB6-BE8F-B64FD62946A1,387390AE-CF25-47ED-BD36-F42455DE1A4B,78D5F0AD-9974-40A1-942F-0F03A278DAD9,F368F41E-0371-4790-9197-61ED793022C8,7C7AA88B-638A-451A-B235-A1A1444BE417,9C01AD7C-8470-47AB-B8AE-670E3A381E89,7E43F2F1-9252-4B44-8A61-D05305915A5F,3BB9D48B-DC7B-4D92-BB26-B6DE629A2506,A360D595-A829-4DDE-932E-9995626917E5,6E9B5349-FAA7-4CDA-9533-1AD1ACDFAC4E,07243837-C353-4C25-A5B1-4DA32807E97D,B832C034-F793-415F-BFC8-D97A18BA6BC7,83CD1A13-66CB-49CC-BD84-5D8334DB774A,93C142C5-3A85-432B-80D6-2E7B1B4694F4,2434FCE7-A50B-4527-9970-C7224B31141C,5633FB6E-D623-49D4-9858-4E20E64DE458,429ECA02-DBCD-45FB-942C-CA4BC1BC8A72,B5F0DC80-5473-465C-9D7F-9589F1B78E12,567FF916-7DE0-403C-8528-7931A43E0D18,010B34F4-910E-4515-990B-8E72DF009578,8FAA1A89-E8D9-46D0-8E2C-9259920ACBFE,5A545A77-2198-4685-A87F-E0F2DAECECF6,438AACF8-006F-4522-853F-30DBBABD8C15,778FAE0C-A5CF-4B67-93A9-1A803E3E699F,E7447185-7509-449D-8907-F30A42CF7EB5,0EDBAC37-9D08-44D1-B279-BC6ACF126CAF,3FFF89FA-2020-43CC-BACD-D66117B3DD26,834BB391-5EB5-43A8-980A-D305EDAE6FA7,9A38AD88-BAA6-4FBE-885B-69E951BD1EFE,B500EE6C-99DB-49A3-A1F1-AFFD7FE28068,4F2938F2-A801-45E5-8E06-BE03DE03C8A7,F18A45C0-419C-4723-AB7D-5880EF668CE9,ABB88E86-6E83-4A59-9266-8B98AA91774D,E19ED1CA-DEBD-4786-BA7B-C122C7D2E5B7,66BE50FE-EA21-4633-A181-CD35196DF06E,7D6BF5B1-86D1-47FE-9D9C-735718F94874,84D15CE0-69DF-4EFD-801E-96A4D6AABEDB,CEE203DE-6C0E-4FDE-9C3A-0E73430F17DA,F2F38886-C25A-4C6B-93E7-36461405BA99,C65D2670-F37F-48CB-804A-D35BB1C27D9F,DE8E5194-7B34-4802-BDA6-6A86EB5EDE05,FABA5F56-99F7-4F8F-9CC1-5B0B2EB72922,2917BD67-CE81-4B94-B241-D4A9DDA60319,A524A94E-F19B-42B9-AA8E-171751C339AA,F71436CF-F756-44E0-8E69-6951F6B3E54A,582EE839-B83F-4908-9780-D0C92DC44FD0,824369CF-00A0-434E-94BC-71CA1317012C,BCB35099-B04E-4796-A25D-953329FE62F3,5DBEBCFD-80D6-466A-BAEF-C75E65A3B12E,C30ACBCA-4FA1-46DE-8F15-4830BC27E160,9453EF65-7C69-449E-BF7C-4FECFB56713E,4AA75825-21CF-475B-8040-126A13FA2216,CA97C80E-17FA-4866-86CE-29886145ED80,7DE24BED-202E-416D-B5F2-8207D97B9939,04198E04-CE1D-4A5A-A20C-D1E135B45F94,717DB967-F658-4699-A224-5B261BFEC10A,3487FA64-BE04-42CA-861E-3DAC097D7D32,F3D956DC-C73B-439F-8D79-8239207CC76F,57E2C7E7-56C0-466C-BB08-5EB43922C4F9,462E135A-5616-46CC-A9C0-5A7A0526ACC6,6121F9C1-F4DF-4AAB-9E51-AC1592AA5639,58D44634-A0B5-4F05-8983-B08D392EC742,EB3AC3D3-FDD7-489F-BDCF-BDB55DF33A8B,4105171B-9C90-4ABF-B220-A35E7BA9EE40,20985549-DB24-4B69-9D40-208A47AE658E,43A13026-416F-4308-8A1B-E989BD769E12,612B015E-9F96-4CE6-83E4-23848FD609E5,1E391619-0967-43E1-8CBC-4D54F72A85C2,0544D626-E269-4677-9B05-7DAB23BD103B,C95F7B2C-80FC-4DF2-9680-F74634DCE3E6,863C140E-DC15-4A88-AB8A-8AEF9F4B8164,38CD049A-5333-4FF7-AD34-6B74E19BADCB,0066576D-D66A-4B59-B5C3-471EEBEE8B9A,60ED6DAA-9194-4829-BC1A-00F04BE7930A,13BEB9A6-EFD5-4793-9603-84DB84F1CF7D,461163C6-4CA8-4BA9-95A1-136E612CBA6B,275E9D96-1290-44AB-BF9B-E9E4A803F593,412DF091-7604-4110-87A0-3488116A97E5,11E07FED-ABDB-4B0A-AB2E-4CBF1EAC4301,9A6558F1-9E0D-4107-909A-8EF4BC8A9C2F,63DF3D65-C992-44CF-89B4-893526C6242E,A9024117-2E8B-4240-9E21-CC501F3879B5,FBC3CAD3-2F54-4E32-A0C9-0D826C45AC23,52624B41-AB34-40AD-8709-D9646B618AB0,917E9856-9556-4FD6-A834-858F8837A6B4,98BBD74D-930C-4D80-A91B-0D61347BAA63,FAF2E696-883D-4DE5-8B79-D8E5D9470253,94E04FD9-38E8-462D-82C2-729F7F7F0465,5888517E-3C57-4A0A-9895-EA4BCB0A0ED5,0BB21291-B9F3-445E-A9E9-EA1822083DD3,D595F649-ECBE-45E0-8AAD-BCBC65A654B9,4FE6E920-9A4C-431B-89EA-683A22F15ACD,18B6CC9F-6295-4598-B28B-0CA19D1D9F45,C9F0434D-C84F-49FD-9F44-66D3ACD7B601,F6AAB416-E865-4EEE-8FCB-A91253BEB52B,76CD3BDF-A079-4EF3-ABDE-43CBDD08DB1F,031E8624-5161-43AF-AF19-6BAB5A94FDD8,54186D4A-C6F0-44AD-94FB-73B4346ABB6B,47E50AD9-BA35-4817-BD4D-5D678FC5A3C5,DD09DE40-8C9B-41EA-B372-9E4E4830E8F4,F223FB83-0EDB-4429-94B9-1AEEF314B73F,BC6B977F-292F-4981-95A0-6065A3C487D5,342226B9-2C0C-416C-81FE-19C49F03AA88,2A6A28E0-F67A-4275-B0D9-A02822E9EF7E,ECAB4696-76F3-458C-B33B-D7F8690C60A0,BBB444FD-15F3-4447-9EA8-1669779A5749,F92E2EF3-A612-476F-9D31-1EEC240C7EA7,0F175D30-2416-4172-BF11-DA78D252D608,5DD3F168-3EF4-492E-BBAA-EACB1357C709,4B46BA97-2860-45E4-9FD3-F418A202E4F0}'); +INSERT INTO cves (cve, severity, published, modified, summary, match_criteria_ids) VALUES ('CVE-2018-10083', 'HIGH', '2018-04-13', '2024-11-21', 'CMS Made Simple (CMSMS) through 2.2.7 contains an arbitrary file deletion vulnerability in the admin...', '{ABE080D4-548B-4AF1-9E61-9381338CC90C}'); +INSERT INTO cves (cve, severity, published, modified, summary, match_criteria_ids) VALUES ('CVE-2018-10029', 'MEDIUM', '2018-04-11', '2024-11-21', 'CMS Made Simple (aka CMSMS) 2.2.7 has Reflected XSS in admin/moduleinterface.php via the m1_name par...', '{ABE080D4-548B-4AF1-9E61-9381338CC90C}'); +INSERT INTO cves (cve, severity, published, modified, summary, match_criteria_ids) VALUES ('CVE-2018-10030', 'HIGH', '2018-04-11', '2024-11-21', 'CMS Made Simple (aka CMSMS) 2.2.7 has CSRF in admin/siteprefs.php.', '{ABE080D4-548B-4AF1-9E61-9381338CC90C}'); +INSERT INTO cves (cve, severity, published, modified, summary, match_criteria_ids) VALUES ('CVE-2018-18887', 'CRITICAL', '2018-11-01', '2024-11-21', 'S-CMS PHP 1.0 has SQL injection in member/member_news.php via the type parameter (aka the $N_type fi...', '{4B6BD148-38BC-4577-8467-2333C2466F90}'); +INSERT INTO cves (cve, severity, published, modified, summary, match_criteria_ids) VALUES ('CVE-2018-12243', 'HIGH', '2018-09-19', '2024-11-21', 'The Symantec Messaging Gateway product prior to 10.6.6 may be susceptible to a XML external entity (...', '{D25EDB76-F75D-4C5E-9122-EB4F520D569D}'); +INSERT INTO cves (cve, severity, published, modified, summary, match_criteria_ids) VALUES ('CVE-2018-12242', 'CRITICAL', '2018-09-19', '2024-11-21', 'The Symantec Messaging Gateway product prior to 10.6.6 may be susceptible to an authentication bypas...', '{D25EDB76-F75D-4C5E-9122-EB4F520D569D}'); +INSERT INTO cves (cve, severity, published, modified, summary, match_criteria_ids) VALUES ('CVE-2015-6175', 'HIGH', '2015-12-09', '2024-11-21', 'The kernel in Microsoft Windows 10 Gold allows local users to gain privileges via a crafted applicat...', '{542DAEEC-73CC-46C6-A630-BF474A3446AC}'); +INSERT INTO cves (cve, severity, published, modified, summary, match_criteria_ids) VALUES ('CVE-2008-3104', 'MEDIUM', '2008-07-09', '2024-11-21', 'Multiple unspecified vulnerabilities in Sun Java Runtime Environment (JRE) in JDK and JRE 6 before U...', '{7E7CD268-A083-43B5-80B7-B7837202CF29,94A87B01-2F20-4E1C-8572-395A96C35D79,BC9476DD-9B56-4811-A248-711C25181F29,6BB00A29-FEBB-4139-9E96-691EC1410EFE,DD8CC179-F76E-4CC2-9CBD-69CBBA5BD532,C2DC7389-9697-4EF0-9C4E-153731CDD75D,C5F476C8-5466-4E6B-B73B-4ACFBB02AD5C,D8C7C8C1-AA0D-4BD9-A8EC-85BBE627DE13,BAF0844B-ECB1-4AF0-AA32-1B8789AC5042,25322D24-C5D9-43A6-87CC-1BF7FA6A3E76,400FDCDE-16DE-4BD6-81E2-4A5DA12E99CA,82C49C78-ACE3-407D-AE21-EA180633C437,5F91F8A2-D473-48DC-81DA-21291DE7B6E8,3E46B3B4-9E1C-4C87-A4CD-C4CE7FBCA7F6,0F69C703-8541-4AA8-A66A-0292E0FCB749,99E08AB2-49AD-42C6-967F-773F2C6E188A,9459F130-A3DD-4A4E-9582-4FB82619EB5A,9C9F6EA8-6A88-4485-89A3-0FDF84AB51DA,67E0818A-3675-4293-89FE-5001E36C0F38,95112B98-B6B2-43FA-BF76-F518649CF3BE,3A18341A-3688-48E7-95AD-283EC9C95B4A,E301C59A-47F5-4861-9091-D0002CBA5B7A,AAB87D43-2860-43DD-94EE-886D7D75A351,399B06AC-E101-48EE-A362-D75F7072FF5E,FD3AC618-7B66-4167-ABE5-87BE6907FB5A,2B0EAF17-18D3-45F2-9B6F-66BEC0F49FB6,5F861B32-B878-4DFC-A9D1-350B1013AA1F,5A469586-4106-48BB-BF92-8FFDC8AA4C44,89E95205-DB64-44AD-81A4-B77BD7595AAF,62E772B9-8E41-476F-81F5-87B41F1827A1,7CE78463-2CE8-43C6-BB06-AA40C72B1A4F,31A04480-92DF-49AD-9B36-7F1FCB29DE90,E2FD0B72-683D-4FF6-BCF5-5DE85BF3064B,F78CD4B5-4B1D-4128-8AEA-2F967C38C6C4,62CAA3E7-9D65-48F3-ACF7-9D705D94DE54,477C310B-50AD-4D40-8EDB-4A80F0BF321D,60A1F526-6B28-47A3-8D2C-06CA067E9164,17F09D9E-B04B-477E-86E6-E1B1F9650973,6F929C59-9602-4962-95B4-4165D66E5935,E8B76949-9282-44D0-8075-74E482CE9A82,B9B072DD-FC4F-4E07-9837-0E16017CA4AB,969BE4EC-4D13-4B74-8137-FA0F83F0FDC3,81F47561-F59C-4904-8E05-D8A9629405A8,D5E6F92A-FC59-4CE7-B7F8-94CBF3DC8F21,496901D5-014D-4920-A343-91A56F6FEFA0,1EEAB662-644A-4D7B-8237-64142CF48724,D9598A49-95F2-42DB-B92C-CD026F739B83,BED1009E-AE60-43A0-A0F5-38526EFCF423,D011585C-0E62-4233-85FA-F29A07D68DA7,F226D898-F0E8-41D8-BF40-54DE9FB5426D,4CB9CCD1-A67D-4800-9EC5-6E1A0B0B76E7,CE28C283-447A-4F83-B96B-69F96E663C1C,D102063B-2434-4141-98E7-2DE501AE1728,03B8CD03-CD31-4F4D-BA90-59435578A4F9,41A994BF-1F64-480A-8AA5-748DDD0AB68C,88519F2D-AD06-4F05-BEDA-A09216F1B481,AC728978-368D-4B36-B149-70473E92BD1B,FD5187B1-CB86-48E8-A595-9FCFD9822C0C,6C660DE4-543A-4E9B-825D-CD099D08CBD8,98C1942E-16C0-4EB2-AB57-43EC6EC9C3A2,318719C9-7B01-4021-B2EF-8341254DFE6A,DB8FA9BA-51CA-4473-9FE1-9A32FB8C8041,6718104E-82B3-4160-9968-4980C309EC8B,34710306-D6CF-4D07-84BF-71A8839BE416,87BF46A9-8E4A-4583-B35F-052FD481DF66,32B351BB-6CA6-4CEF-9F5D-ED47774FC676,CDA40FCD-1D34-4C47-908F-697433236153,00639A84-BD03-4BD9-A655-F806693DBC8B,14824B23-FF9F-4D6D-9D02-12B79BE346A0,6493744C-A69D-4377-937E-85E7F5535EA9,C09019B1-B873-41CE-951E-4777F324729C,EC4209A0-E73F-4B5A-9925-B5D20F879455,297DF5AD-FC22-432B-AE6A-2B1E6CFE1BE4,BFB8516D-03C4-478D-AFE2-824867FDC739,F82AED17-FEC3-47D0-A395-26ACD07FBE52,9630BC7B-9039-4FA6-86F8-5274783F3EB1,F1A6A15C-216A-42B1-84EF-B3D9A313D4A2,EC39C819-9439-4029-8377-F6D58B3DFDFB,A053DEF6-1317-4DA8-91D7-E1970DA62351,F0DBFDD8-40AE-44F2-8F02-FB7A4FAE5235,EB0605FF-3DDC-4F3A-8171-F3A447E9C292,801FF3B4-0729-4710-BFC2-4B078029944F,8EB8591E-3D6E-489B-B0D6-CEBB9D09EA68,8A411676-6666-4B54-A008-443B9B42F670,0AEDC9B2-8AA6-4DA2-A187-49A1DD106725,002CA86D-3090-4C7A-947A-21CB5D1ADD98,E6C4CA79-9D0A-4E47-A1A4-9CBEDDCFE05E,AF4E34FD-D927-42BB-8A16-031D77CB4B9E,37A3D49A-BE20-47BF-A85F-122357BAB098,F45DB5D3-7F35-4531-9A82-24EB50034787,4695F707-12E8-4BA4-BBE1-C21CB7213A2A,C918FB49-DA13-4326-BE86-6F6BEA4CE4E1,5573CAD1-39D1-4ADB-BB95-EBB554B43B4E,DD02EBDF-6E51-4538-9EDD-B1DE914D09C9,53C3C0E3-5F40-412B-A4AD-A7A291DE2A08,36888382-79C8-4C97-A654-C668CD68556F,F34C99E6-F9F0-4EF3-8601-B47EAE3D7273,A74DD08D-CEDB-460E-BED5-78F6CAF18BF5,E60560EC-6DBD-4A17-BFFA-FAD9193A0BC7,E4F64FBC-DC97-4FE3-A235-18B87945AF7A,85048406-9051-4E69-94A8-5C449F3B89E7,B1C88DD7-0B46-4405-BD35-60D27E2DBA14}'); +INSERT INTO cves (cve, severity, published, modified, summary, match_criteria_ids) VALUES ('CVE-2006-3359', 'HIGH', '2006-07-06', '2024-11-21', 'Multiple SQL injection vulnerabilities in index.php in NewsPHP 2006 PRO allow remote attackers to in...', '{B67A384A-1976-4A28-AFCD-AE1E3F383BF6}'); +INSERT INTO cves (cve, severity, published, modified, summary, match_criteria_ids) VALUES ('CVE-2006-1888', 'MEDIUM', '2006-04-20', '2024-11-21', 'phpGraphy 0.9.11 and earlier allows remote attackers to bypass authentication and gain administrator...', '{93CB15FA-0081-4273-B158-FB1B6AFDB9DC,F83775BB-7D82-4E5F-9501-EF405F246BDC,63F46B5E-2D7A-46FB-87FE-CB866341C9B1}'); +INSERT INTO cves (cve, severity, published, modified, summary, match_criteria_ids) VALUES ('CVE-2016-3218', 'HIGH', '2016-06-16', '2024-11-21', 'The kernel-mode drivers in Microsoft Windows Vista SP2, Windows Server 2008 SP2 and R2 SP1, Windows ...', '{21540673-614A-4D40-8BD7-3F07723803B0,232581CC-130A-4C62-A7E9-2EC9A9364D53,7519928D-0FF2-4584-8058-4C7764CD5671,A7F51B5F-AA19-4D31-89FA-6DFAC4BA8F0F,197E82CB-81AF-40F1-A55C-7B596891A783,0C28897B-044A-447B-AD76-6397F8190177,2ACA9287-B475-4AF7-A4DA-A7143CEF9E57,A7DF96F8-BA6A-4780-9CA3-F719B3F81074,DB18C4CE-5917-401E-ACF7-2747084FD36E,0A0D2704-C058-420B-B368-372D1129E914}'); +INSERT INTO cves (cve, severity, published, modified, summary, match_criteria_ids) VALUES ('CVE-2013-1315', 'HIGH', '2013-09-11', '2024-11-21', 'Microsoft SharePoint Server 2007 SP3, 2010 SP1 and SP2, and 2013; Office Web Apps 2010; Excel 2003 S...', '{CEBB33CD-CACF-4EB8-8B5F-8E1CB8D7A440,94F5E2F8-0D37-4FCC-B55A-9F09C421272C,96EBA20F-201E-43AA-9F83-B73FB31696C6,5E01525C-A3AB-4AB7-82F9-B91E4D552FD7,3C4CFF7E-7170-4A6B-9A59-9815EE896C62,0390EFCA-87B4-42D6-817A-603765F49816,08795370-2A25-4F0D-970D-9B087F980BBD,78F27907-6FAB-4A9D-B100-B3D170520A74,971EC323-267F-4DAF-BA3B-10A47A9F1ADA,0D84FC39-29AA-4EF2-ACE7-E72635126F2B,44BC7B7B-7191-431C-8CAE-83B3F0EFF03E,0C86EA4A-7108-4A3A-A447-19CB3CA76B08,0C86EA4A-7108-4A3A-A447-19CB3CA76B08,81443CAD-F47E-4FD1-8E0E-8D646C90E4E3,D133FB73-C7F6-481C-B050-C242C771ED21,6B7AEA5E-C3D7-4E6D-96F0-5F9A175631C9,6FA65D4A-00C8-47E2-AF9F-6B420017CD29,9A57C675-05A9-4BC2-AE95-7CA5CA6B1F73,858F70F4-3128-477D-ACAA-73F0AFA23A2B,55C05DB1-03DC-454B-85E5-715938F0E13E,343EEB54-C1B1-4D7B-8780-5B5A5F2F840C,A8235774-4B57-4793-BE26-2CDE67532EDD}'); +INSERT INTO cves (cve, severity, published, modified, summary, match_criteria_ids) VALUES ('CVE-2013-1313', 'HIGH', '2013-02-13', '2024-11-21', 'Object Linking and Embedding (OLE) Automation in Microsoft Windows XP SP3 does not properly allocate...', '{CE477A73-4EE4-41E9-8694-5A3D5DC88656}'); +INSERT INTO cves (cve, severity, published, modified, summary, match_criteria_ids) VALUES ('CVE-2013-1312', 'HIGH', '2013-05-15', '2024-11-21', 'Use-after-free vulnerability in Microsoft Internet Explorer 9 and 10 allows remote attackers to exec...', '{C043EDDD-41BF-4718-BDCF-158BBBDB6360,D5808661-A082-4CBE-808C-B253972487B4}'); +INSERT INTO cves (cve, severity, published, modified, summary, match_criteria_ids) VALUES ('CVE-2013-1311', 'HIGH', '2013-05-15', '2024-11-21', 'Use-after-free vulnerability in Microsoft Internet Explorer 8 allows remote attackers to execute arb...', '{A52E757F-9B41-43B4-9D67-3FEDACA71283}'); +INSERT INTO cves (cve, severity, published, modified, summary, match_criteria_ids) VALUES ('CVE-2006-2656', 'HIGH', '2006-05-30', '2024-11-21', 'Stack-based buffer overflow in the tiffsplit command in libtiff 3.8.2 and earlier might might allow ...', '{36B8B853-0FF0-4E2F-983D-683A0951CEF3,CCA5EEB8-9D2C-49A9-BB08-CE5017B79D81,261FAE51-5207-4136-9FFE-2330A281266C,B32C83B9-F7DA-450A-A687-9A73734CD712,9485283A-B73E-4567-914A-42A86F5FFCB4,95892168-0FB6-4E3F-9303-2F9B3CF60D2B,A5021564-5E0A-4DDC-BC68-200B6050043E,11C50750-FE1D-42BA-9125-7D8E872AA2DB,19AA66E5-FDDD-4243-B945-DFEBDD25F258,62F359CD-5DC4-4919-B8E1-95BDDBD27EFC,D2C8C550-3313-4266-B4B3-E9E9047CFE04,ABEEBA7B-81D5-4148-912B-9AD448BBE741,448555FE-8E91-4EA7-BA05-6915F5508319,44BC5E2C-B6A6-4999-A1EA-B91DA5C350C7,F2850FD9-8BE8-410E-8A24-28549DAACEB3}'); +INSERT INTO cves (cve, severity, published, modified, summary, match_criteria_ids) VALUES ('CVE-2018-13895', 'HIGH', '2019-05-24', '2024-11-21', 'Due to the missing permissions on several content providers of the RCS app in its android manifest f...', '{4E2F2D26-2833-45A4-81F0-8E9F338C1E13,4EB171B1-D163-4801-A241-8DD7193A5DCB,A960B86A-C397-4ACB-AEE6-55F316D32949,D79B8959-3D1E-4B48-9181-D75FE90AAF98,A35FECFB-60AE-42A8-BCBB-FEA7D5826D49,E9765187-8653-4D66-B230-B2CE862AC5C0,35B7E25E-FA92-4C36-883C-CFF36F4B3507,ECD99C6F-2444-4A5E-A517-0C8023DDF23D,FE28A59C-7AA6-4B85-84E8-07852B96108E,5DEE828B-09A7-4AC1-8134-491A7C87C118,8CA1E7B0-782B-4757-B118-802943798984,95CB08EC-AE12-4A54-AA3C-998F01FC8763,B05FD66D-13A6-40E9-A64B-E428378F237E,D0D665C1-3EBA-42F2-BF56-55E6C365F7DF,F18CD1F1-C36A-4840-88CD-8F00BD68EF1A,6A01800E-994E-4095-AD86-F02DC9D9C86E,0FA80D57-3191-47CF-AD3F-9F2D64E443FE,B2AFB212-F01A-4CEB-8DB4-2E0CC2308CB6,E0986EF1-0974-488E-84C4-6880F876CE55,8C08BA58-2EBC-4A22-85A4-2ECD54693B9B,27110478-4C08-49E6-BD53-8BAAD9D5BD65,3664D302-D22A-4B25-B534-3097AE2F8573,C56BC939-2FE8-4AB4-B638-35C83B224005,E36C12E2-7064-41E6-B357-3F0E6E6D0A0F,8DE3EA03-0373-4FEF-B1FC-123A8073520B,A64D3E69-0784-4DEA-96C1-2D41EAFA1906,B11CE0F1-29BD-46E1-ACFE-D076192F138E,D205DB4E-68C2-4B13-8373-128870DF83D8,E07C621F-0BC0-40C1-9678-1AF6498AC487,9C621A62-E346-406B-9D20-8FF6C2B0851F,549E6F7E-A54F-423F-BD4A-A8FB97DBD39E,992C3835-7183-4D96-8647-DD9916880323,A7B95CCC-37F1-4768-8D64-CA2028E93E03,D1426161-4F7C-44B1-AA9E-EA661AA68947,ECF81213-DE2D-4C4B-99E8-71AFD87E92CD,95E826EF-343B-47FA-AB54-F13E868CE6A7,06E0CC35-AC20-42D7-8FEA-CA4685E33E72,4A2C4DED-2367-4736-A0AF-C8356F1271AD,F2126866-3B02-42B4-A57A-4EFF30848B55,F832FE19-8D65-4779-B6F5-BD90BD131FD4,CE94E380-CB75-462E-B411-BF38F17D53B2,0947F38F-3DC2-45F1-B3B3-963922F32054,BC1650DB-FDF8-4BE5-9437-8ADA11A07116,B51DD51F-4BDE-497B-89E5-551D10CF3442,0752054B-2C29-4490-ADC8-29F82BAA17E6,005038B5-BCB7-4A23-8562-ACEF6E156C1F,6BFF8872-645F-4A05-BAF9-7797CFBE37C6,9CB91AFF-C149-4F5C-92EC-E78E66935528,2B529780-DB0A-4F9C-AE63-6DEC593B86E5,669E7360-E8C3-4BB8-A3B6-61BD58AFAF62,D49606C5-7306-4F33-864C-C1905594F09C,B43964AF-7CEC-420A-935B-D3895B2BAC70,E077FC03-F86F-417A-A3E6-BC88CB85C6F0,E016356C-94ED-4CDD-8351-97D265FE036E,E08016A2-E4FE-4E9C-A915-C66BE157AFB5,018452D0-007C-4740-B2AF-E5C8BBAC310F,1CFF35A3-1472-4665-9DAB-1ABC45C0D5B4,F930E9BF-C502-49C6-8BE8-9A711B89FA1B,0A2D2B3B-CB28-46AA-9117-A7FA371FDE80,DE18BF66-B0DB-48BB-B43A-56F01821F5A3,0C10C7CB-3B66-4F17-8146-6A85611E2BA9,B9DA765F-53DE-4FB0-B825-6C11B3177641,91400943-3D25-4E44-9FFD-9E3076305D80,57B16867-710D-4748-8636-635E2C6F7389,A2326BD7-28A5-4244-8501-B109913E7AE6,532D244B-8B5A-4923-B7F1-9DC0A5FC0E9D,84289E6D-DA2A-4D04-9DDA-E8C46DDDD056,C0B56360-7AC3-410A-B7F8-1BE8514B3781,8EA0D645-80F6-48C3-AF0D-99198ADC8778,814FF3F3-CD5A-45A3-988C-6457D2CEB48C,24D7B67C-6FEC-48F8-9D46-778E4528BC20,05006807-D961-446C-B8DC-C87507F1316E,A0CE1B23-6FE3-41C4-B264-C7A9E8BDBEC1,794BA13C-3C63-4695-AA45-676F85D904BE}'); +INSERT INTO cves (cve, severity, published, modified, summary, match_criteria_ids) VALUES ('CVE-2018-14788', 'MEDIUM', '2018-10-01', '2024-11-21', 'Fuji Electric Alpha5 Smart Loader Versions 3.7 and prior. A buffer overflow information disclosure v...', '{4494AD60-80C3-4B40-87A8-4D119AB77C69,5319594A-AD04-4A71-875A-16EE68D28661}'); +INSERT INTO cves (cve, severity, published, modified, summary, match_criteria_ids) VALUES ('CVE-2019-15222', 'MEDIUM', '2019-08-19', '2024-11-21', 'An issue was discovered in the Linux kernel before 5.2.8. There is a NULL pointer dereference caused...', '{4D264E92-50E9-46B2-8633-23B9F861EEDA,234DEFE0-5CE5-4B0A-96B8-5D227CB8ED31,CDDF61B7-EC5C-467C-B710-B89F502CD04F,3A756737-1CC4-42C2-A4DF-E1C893B4E2D5,0EF46487-B64A-454E-AECC-D74B83170ACD,D6D700C5-F67F-4FFB-BE69-D524592A3D2E,090AA6F4-4404-4E26-82AB-C3A22636F276,F1E78106-58E6-4D59-990F-75DA575BFAD9,B620311B-34A3-48A6-82DF-6F078D7A4493}'); +INSERT INTO cves (cve, severity, published, modified, summary, match_criteria_ids) VALUES ('CVE-2020-5603', 'HIGH', '2020-06-30', '2024-11-21', 'Uncontrolled resource consumption vulnerability in Mitsubishi Electoric FA Engineering Software (CPU...', '{5AA4BCF9-CE1B-4A53-BBBD-396FE7D8D410,892E3CDC-AFC4-4EF1-AF46-3F161603DDB1,AD8B6AFD-17BE-4657-9F55-B0CA52E2578A,567CE406-0FCE-44DC-B210-1E54EDB6FE11,591B76E1-665F-4473-8A65-B8549B61807F,7CCB1E6D-333D-458E-AE2D-974E16195811,20F14A8B-E42D-4621-8BCC-A6D28A8A0D7A,35D76E9B-394E-47A1-B6F1-4854909A8D59,37B4823F-E257-4CFF-A20B-FAB4A60D49D9,4116C452-19C3-4F48-8A05-864BD884BDD0,BB41FBDD-2785-4012-AB84-2B1F947E9512,6DBBC676-19E1-4780-8D23-6888884E67A4,56B1A257-F1C6-4213-92A0-7476E3EB6207,76A6CCE9-ACB8-4A24-A4E5-0F8DCBC4475B,DA012067-3CF9-46E8-9C5D-C64D92C2574D,19CEBFB8-E23E-4ABB-9337-221D6749D456,6998E84B-0EFC-4ACB-BFC6-FFC1A675F1B3,0303271B-F016-4D0E-A862-313A31B8CD60,5BD4EC4A-ACF7-45F2-893D-569B4F8F8909,5E66C5F1-23BF-42F9-8A25-FE8A7E66B07D}'); +INSERT INTO cves (cve, severity, published, modified, summary, match_criteria_ids) VALUES ('CVE-2020-1301', 'HIGH', '2020-06-09', '2024-11-21', 'A remote code execution vulnerability exists in the way that the Microsoft Server Message Block 1.0 ...', '{21540673-614A-4D40-8BD7-3F07723803B0,E01A4CCA-4C43-46E0-90E6-3E4DBFBACD64,83B14968-3985-43C3-ACE5-8307196EFAE3,7CB85C75-4D35-480E-843D-60579EC75FCB,6B8F3DD2-A145-4AF1-8545-CC42892DA3D1,3FB5CDAE-C713-4D9D-9D6A-2C2E8924A4BB,E9273B95-20ED-4547-B0A8-95AD15B30372,AAE74AF3-C559-4645-A6C0-25C3D647AAC8,C2B1C231-DE19-4B8F-A4AA-5B3A65276E46,E93068DB-549B-45AB-8E5C-00EB5D8B5CF8,C6CE5198-C498-4672-AF4C-77AB4BE06C5C,5F422A8C-2C4E-42C8-B420-E0728037E15C,B320A104-9037-487E-BC9A-62B4A6B49FD0,AF07A81D-12E5-4B1D-BFF9-C8D08C32FF4F,A7DF96F8-BA6A-4780-9CA3-F719B3F81074,DB18C4CE-5917-401E-ACF7-2747084FD36E,041FF8BA-0B12-4A1F-B4BF-9C4F33B7C1E7,CAACE735-003E-4ACB-A82E-C0CF97D7F013,5B921FDB-8E7D-427E-82BE-4432585080CF,C253A63F-03AB-41CB-A03A-B2674DEA98AA,0B60D940-80C7-49F0-8F4E-3F99AC15FA82,DB79EE26-FC32-417D-A49C-A1A63165A968}'); +INSERT INTO cves (cve, severity, published, modified, summary, match_criteria_ids) VALUES ('CVE-2007-5326', 'HIGH', '2007-10-13', '2024-11-21', 'Multiple buffer overflows in (1) RPC and (2) rpcx.dll in CA BrightStor ARCServe BackUp v9.01 through...', '{F52790F8-0D23-47F4-B7F7-6CB0F7B6EA14,E37161BE-6AF5-40E0-BD63-2C17431D8B36,477EE032-D183-478F-A2BF-6165277A7414,78AA54EA-DAF1-4635-AA1B-E2E49C4BB597,328E1C42-488A-43FC-8DF2-758DC73B74AF,A8781759-7B4C-47C3-8A60-8CA5520360C5,6E236148-4A57-4FDC-A072-A77D3DD2DB53,1366038C-7552-44C7-BB01-316AA0D088F9,D24EEBF9-8301-4E8E-8AE1-E41774EDEFD9}'); +INSERT INTO cves (cve, severity, published, modified, summary, match_criteria_ids) VALUES ('CVE-2020-9248', 'MEDIUM', '2020-07-31', '2024-11-21', 'Huawei FusionComput 8.0.0 have an improper authorization vulnerability. A module does not verify som...', '{5D251AD0-6227-4190-815F-B526F40D8A43}'); +INSERT INTO cves (cve, severity, published, modified, summary, match_criteria_ids) VALUES ('CVE-2022-26417', 'HIGH', '2022-04-01', '2024-11-21', 'Omron CX-Position (versions 2.5.3 and prior) is vulnerable to a use after free memory condition whil...', '{7D8E2155-0F09-4E95-8D64-3E2D779191F3}'); +INSERT INTO cves (cve, severity, published, modified, summary, match_criteria_ids) VALUES ('CVE-2017-5095', 'HIGH', '2017-10-27', '2024-11-21', 'Stack overflow in PDFium in Google Chrome prior to 60.0.3112.78 for Linux, Windows, and Mac allowed ...', '{6E6FC5B1-DB09-4BF0-88CA-E5E2C42FAA37,387021A0-AF36-463C-A605-32EA7DAC172E,703AF700-7A70-47E2-BC3A-7FD03B3CA9C1,A2572D17-1DE6-457B-99CC-64AFD54487EA,DEECE5FC-CACF-4496-A3E7-164736409252,EE249E1B-A1FD-4E08-AA71-A0E1F10FFE97,9BBCD86A-E6C7-4444-9D74-F861084090F0,E5ED5807-55B7-47C5-97A6-03233F4FBC3A}'); diff --git a/pkg/models/tests/epss.sql b/pkg/models/tests/epss.sql index 3a251c2..99a4b0b 100644 --- a/pkg/models/tests/epss.sql +++ b/pkg/models/tests/epss.sql @@ -1,10 +1,4 @@ -DROP TABLE IF EXISTS epss_data; -CREATE TABLE "epss_data" ( - "cve" TEXT NOT NULL UNIQUE, - "epss" REAL NOT NULL, - "percentile" REAL NOT NULL, - PRIMARY KEY ("cve") -); +-- Test data only. The schema comes from testSchemaDDL in pkg/models/test_schema.go; do not add DDL here. INSERT INTO epss_data (cve, epss, percentile) VALUES ('CVE-2017-9302', 0.00143, 0.5124); INSERT INTO epss_data (cve, epss, percentile) VALUES ('CVE-2015-0269', 0.00285, 0.6832); -INSERT INTO epss_data (cve, epss, percentile) VALUES ('CVE-2018-10083', 0.00891, 0.8215); \ No newline at end of file +INSERT INTO epss_data (cve, epss, percentile) VALUES ('CVE-2018-10083', 0.00891, 0.8215); diff --git a/pkg/models/tests/golang_projects.sql b/pkg/models/tests/golang_projects.sql index bdd8753..3c39a9a 100644 --- a/pkg/models/tests/golang_projects.sql +++ b/pkg/models/tests/golang_projects.sql @@ -1,26 +1,4 @@ -DROP TABLE IF EXISTS golang_projects; -CREATE TABLE golang_projects -( - component text not null, - version text not null, - version_id integer not null, - version_date text not null, - is_module boolean, - is_package boolean, - license text not null, - license_id integer not null, - has_valid_go_mod_file boolean, - has_redistributable_license boolean, - has_tagged_version boolean, - has_stable_version boolean, - repository text not null, - is_indexed boolean, - purl_name text not null, - mine_id integer not null, - index_timestamp text not null, - primary key (purl_name, version) -); - -INSERT INTO golang_projects (component, version, version_id, version_date, license, license_id, repository, purl_name, mine_id, index_timestamp, is_indexed) VALUES ('github.com/scanoss/papi', 'v0.0.1', 19541010, '', 'MIT', 5614, 'github.com/scanoss/papi', 'github.com/scanoss/papi', 45, '2022-02-21T19:51:21.112979Z', True); -INSERT INTO golang_projects (component, version, version_id, version_date, license, license_id, repository, purl_name, mine_id, index_timestamp, is_indexed) VALUES ('google.golang.org/grpc', 'v1.19.0', 5193086, '', 'Apache-2.0', 552, 'github.com/grpc/grpc-go', 'google.golang.org/grpc', 45, '2022-05-09T20:17:02.339878Z', True); -INSERT INTO golang_projects (component, version, version_id, version_date, license, license_id, repository, purl_name, mine_id, index_timestamp, is_indexed) VALUES ('google.golang.org/grpc', 'v1.7.0', 11640350, '', '', 9999, 'github.com/grpc/grpc-go', 'google.golang.org/grpc', 45, '2023-11-24T20:17:02.339878Z', True); +-- Test data only. The schema comes from testSchemaDDL in pkg/models/test_schema.go; do not add DDL here. +INSERT INTO golang_projects (component, version_id, version_date, license_id, purl_name, mine_id, is_indexed) VALUES ('github.com/scanoss/papi', 19541010, '', 5614, 'github.com/scanoss/papi', 45, True); +INSERT INTO golang_projects (component, version_id, version_date, license_id, purl_name, mine_id, is_indexed) VALUES ('google.golang.org/grpc', 5193086, '', 552, 'google.golang.org/grpc', 45, True); +INSERT INTO golang_projects (component, version_id, version_date, license_id, purl_name, mine_id, is_indexed) VALUES ('google.golang.org/grpc', 11640350, '', 9999, 'google.golang.org/grpc', 45, True); diff --git a/pkg/models/tests/licenses.sql b/pkg/models/tests/licenses.sql index 03892e5..2386088 100644 --- a/pkg/models/tests/licenses.sql +++ b/pkg/models/tests/licenses.sql @@ -1,21 +1,12 @@ -DROP TABLE IF EXISTS licenses; -CREATE TABLE licenses -( - id INTEGER PRIMARY KEY AUTOINCREMENT, - license_name text not null unique, - spdx_id text not null default '', - is_spdx boolean not null default false, - is_sanitized boolean not null default false -); - -insert into licenses (id, license_name, spdx_id, is_spdx) values (15, 'GPL-2 or GPL-3', 'GPL-2.0-only/GPL-3.0-only/DoesNotExist', true); -insert into licenses (id, license_name, spdx_id, is_spdx) values (109, '3-Clause BSD License', 'BSD-3-Clause', true); -insert into licenses (id, license_name, spdx_id, is_spdx) values (552, 'Apache 2.0', 'Apache-2.0', true); -insert into licenses (id, license_name, spdx_id, is_spdx) values (850, 'Apache License 2.0', 'Apache-2.0', true); -insert into licenses (id, license_name, spdx_id, is_spdx) values (1378, 'BSD', '0BSD', true); -insert into licenses (id, license_name, spdx_id, is_spdx) values (2815,'GPL-2.0-only','GPL-2.0-only',true); -insert into licenses (id, license_name, spdx_id, is_spdx) values (2821,'GPL-3.0-only','GPL-3.0-only',true); -insert into licenses (id, license_name, spdx_id, is_spdx) values (4863, 'ISC', 'ISC', true); -insert into licenses (id, license_name, spdx_id, is_spdx) values (5236, 'LGPLv2.1+', 'LGPL-2.1-or-later', true); -insert into licenses (id, license_name, spdx_id, is_spdx) values (5614, 'MIT', 'MIT', true); -insert into licenses (id, license_name, spdx_id, is_spdx) values (9999, '', '', false); +-- Test data only. The schema comes from testSchemaDDL in pkg/models/test_schema.go; do not add DDL here. +INSERT INTO licenses (id, license_name, spdx_id, is_spdx) VALUES (15, 'GPL-2 or GPL-3', 'GPL-2.0-only/GPL-3.0-only/DoesNotExist', true); +INSERT INTO licenses (id, license_name, spdx_id, is_spdx) VALUES (109, '3-Clause BSD License', 'BSD-3-Clause', true); +INSERT INTO licenses (id, license_name, spdx_id, is_spdx) VALUES (552, 'Apache 2.0', 'Apache-2.0', true); +INSERT INTO licenses (id, license_name, spdx_id, is_spdx) VALUES (850, 'Apache License 2.0', 'Apache-2.0', true); +INSERT INTO licenses (id, license_name, spdx_id, is_spdx) VALUES (1378, 'BSD', '0BSD', true); +INSERT INTO licenses (id, license_name, spdx_id, is_spdx) VALUES (2815, 'GPL-2.0-only', 'GPL-2.0-only', true); +INSERT INTO licenses (id, license_name, spdx_id, is_spdx) VALUES (2821, 'GPL-3.0-only', 'GPL-3.0-only', true); +INSERT INTO licenses (id, license_name, spdx_id, is_spdx) VALUES (4863, 'ISC', 'ISC', true); +INSERT INTO licenses (id, license_name, spdx_id, is_spdx) VALUES (5236, 'LGPLv2.1+', 'LGPL-2.1-or-later', true); +INSERT INTO licenses (id, license_name, spdx_id, is_spdx) VALUES (5614, 'MIT', 'MIT', true); +INSERT INTO licenses (id, license_name, spdx_id, is_spdx) VALUES (9999, '', '', false); diff --git a/pkg/models/tests/mines.sql b/pkg/models/tests/mines.sql index 1531a24..6d3da3c 100644 --- a/pkg/models/tests/mines.sql +++ b/pkg/models/tests/mines.sql @@ -1,11 +1,4 @@ -DROP TABLE IF EXISTS mines; -CREATE TABLE mines ( - id INTEGER PRIMARY KEY, - purl_type TEXT DEFAULT '', - mine_name TEXT -); - - +-- Test data only. The schema comes from testSchemaDDL in pkg/models/test_schema.go; do not add DDL here. INSERT INTO mines (id, mine_name, purl_type) VALUES (0, 'maven.org', 'maven'); INSERT INTO mines (id, mine_name, purl_type) VALUES (1, 'rubygems.org', 'gem'); INSERT INTO mines (id, mine_name, purl_type) VALUES (2, 'npmjs.org', 'npm'); @@ -52,4 +45,3 @@ INSERT INTO mines (id, mine_name, purl_type) VALUES (42, 'crates.io', 'cargo'); INSERT INTO mines (id, mine_name, purl_type) VALUES (43, 'eclipse.org', 'eclipse'); INSERT INTO mines (id, mine_name, purl_type) VALUES (44, 'eclipse.org', 'gitlab'); INSERT INTO mines (id, mine_name, purl_type) VALUES (45, 'golang.org', 'golang'); - diff --git a/pkg/models/tests/ndv_match_criteria_ids.sql b/pkg/models/tests/ndv_match_criteria_ids.sql index f0da12f..b4e6fdd 100644 --- a/pkg/models/tests/ndv_match_criteria_ids.sql +++ b/pkg/models/tests/ndv_match_criteria_ids.sql @@ -1,25 +1,11 @@ -DROP TABLE IF EXISTS nvd_match_criteria_ids; -CREATE TABLE nvd_match_criteria_ids -( - match_criteria_id text not null - constraint nvd_match_criteria_ids_pk_1 - primary key, - cpe_ids integer[] not null, - version_start_including text, - version_start_excluding text, - version_end_including text, - version_end_excluding text, - short_cpe_id integer -); - - -INSERT INTO nvd_match_criteria_ids (match_criteria_id, cpe_ids, version_start_including, version_start_excluding, version_end_including, version_end_excluding, short_cpe_id) VALUES ('6AA6464B-7C66-4ABA-A655-E63CE3CD361B', '{}', '', '', '', '', null); -INSERT INTO nvd_match_criteria_ids (match_criteria_id, cpe_ids, version_start_including, version_start_excluding, version_end_including, version_end_excluding, short_cpe_id) VALUES ('31F486B4-9293-4C09-A7A5-CC0ED9643415', '{1958139}', '', '', '', '', null); -INSERT INTO nvd_match_criteria_ids (match_criteria_id, cpe_ids, version_start_including, version_start_excluding, version_end_including, version_end_excluding, short_cpe_id) VALUES ('3297FAF2-7DF3-4EAC-99DD-D83093846780', '{1822755, 158765}', '', '', '', '', null); -INSERT INTO nvd_match_criteria_ids (match_criteria_id, cpe_ids, version_start_including, version_start_excluding, version_end_including, version_end_excluding, short_cpe_id) VALUES ('BB3DD9A8-684A-4D3C-AAC1-795A5154B8FF', '{1958142}', '', '', '', '', null); -INSERT INTO nvd_match_criteria_ids (match_criteria_id, cpe_ids, version_start_including, version_start_excluding, version_end_including, version_end_excluding, short_cpe_id) VALUES ('CF27FE4D-4019-44CB-B86A-0F6EB22043EE', '{1958143}', '', '', '', '', null); -INSERT INTO nvd_match_criteria_ids (match_criteria_id, cpe_ids, version_start_including, version_start_excluding, version_end_including, version_end_excluding, short_cpe_id) VALUES ('2355C9C3-17D4-4024-B60A-55E698139269', '{1958144}', '', '', '', '', null); -INSERT INTO nvd_match_criteria_ids (match_criteria_id, cpe_ids, version_start_including, version_start_excluding, version_end_including, version_end_excluding, short_cpe_id) VALUES ('4BF4A874-DE47-4662-82E8-899258ABCAA4', '{1958145}', '', '', '', '', null); -INSERT INTO nvd_match_criteria_ids (match_criteria_id, cpe_ids, version_start_including, version_start_excluding, version_end_including, version_end_excluding, short_cpe_id) VALUES ('A088E6AE-B04B-4BF2-9710-875767A17644', '{1958146}', '', '', '', '', null); -INSERT INTO nvd_match_criteria_ids (match_criteria_id, cpe_ids, version_start_including, version_start_excluding, version_end_including, version_end_excluding, short_cpe_id) VALUES ('C499F62B-EE47-4F90-8E0C-BE5B3A95E6EB', '{1958147}', '', '', '', '', null); -INSERT INTO nvd_match_criteria_ids (match_criteria_id, cpe_ids, version_start_including, version_start_excluding, version_end_including, version_end_excluding, short_cpe_id) VALUES ('D9BE19EE-D1C3-4688-A614-0E906F949768', '{1958148}', '', '', '', '', null); +-- Test data only. The schema comes from testSchemaDDL in pkg/models/test_schema.go; do not add DDL here. +INSERT INTO nvd_match_criteria_ids (match_criteria_id, version_start_including, version_start_excluding, version_end_including, version_end_excluding, short_cpe_id) VALUES ('6AA6464B-7C66-4ABA-A655-E63CE3CD361B', '', '', '', '', null); +INSERT INTO nvd_match_criteria_ids (match_criteria_id, version_start_including, version_start_excluding, version_end_including, version_end_excluding, short_cpe_id) VALUES ('31F486B4-9293-4C09-A7A5-CC0ED9643415', '', '', '', '', null); +INSERT INTO nvd_match_criteria_ids (match_criteria_id, version_start_including, version_start_excluding, version_end_including, version_end_excluding, short_cpe_id) VALUES ('3297FAF2-7DF3-4EAC-99DD-D83093846780', '', '', '', '', null); +INSERT INTO nvd_match_criteria_ids (match_criteria_id, version_start_including, version_start_excluding, version_end_including, version_end_excluding, short_cpe_id) VALUES ('BB3DD9A8-684A-4D3C-AAC1-795A5154B8FF', '', '', '', '', null); +INSERT INTO nvd_match_criteria_ids (match_criteria_id, version_start_including, version_start_excluding, version_end_including, version_end_excluding, short_cpe_id) VALUES ('CF27FE4D-4019-44CB-B86A-0F6EB22043EE', '', '', '', '', null); +INSERT INTO nvd_match_criteria_ids (match_criteria_id, version_start_including, version_start_excluding, version_end_including, version_end_excluding, short_cpe_id) VALUES ('2355C9C3-17D4-4024-B60A-55E698139269', '', '', '', '', null); +INSERT INTO nvd_match_criteria_ids (match_criteria_id, version_start_including, version_start_excluding, version_end_including, version_end_excluding, short_cpe_id) VALUES ('4BF4A874-DE47-4662-82E8-899258ABCAA4', '', '', '', '', null); +INSERT INTO nvd_match_criteria_ids (match_criteria_id, version_start_including, version_start_excluding, version_end_including, version_end_excluding, short_cpe_id) VALUES ('A088E6AE-B04B-4BF2-9710-875767A17644', '', '', '', '', null); +INSERT INTO nvd_match_criteria_ids (match_criteria_id, version_start_including, version_start_excluding, version_end_including, version_end_excluding, short_cpe_id) VALUES ('C499F62B-EE47-4F90-8E0C-BE5B3A95E6EB', '', '', '', '', null); +INSERT INTO nvd_match_criteria_ids (match_criteria_id, version_start_including, version_start_excluding, version_end_including, version_end_excluding, short_cpe_id) VALUES ('D9BE19EE-D1C3-4688-A614-0E906F949768', '', '', '', '', null); diff --git a/pkg/models/tests/projects.sql b/pkg/models/tests/projects.sql index c8ef5ba..2f35f69 100644 --- a/pkg/models/tests/projects.sql +++ b/pkg/models/tests/projects.sql @@ -1,55 +1,29 @@ -DROP TABLE IF EXISTS projects; -CREATE TABLE projects -( - mine_id integer NOT NULL, - vendor text NOT NULL, - component text NOT NULL, - first_version_date text, - latest_version_date text, - license text, - versions integer, - source_vendor text, - source_component text, - git_created_at text, - git_updated_at text, - git_pushed_at text, - git_watchers integer, - git_issues integer, - git_forks integer, - git_license text, - source_mine_id integer, - purl_name text NOT NULL, - source_purl_name text, - verified text, - license_id integer, - git_license_id integer, - PRIMARY KEY (mine_id, purl_name) -); -insert into projects (mine_id, vendor, component, first_version_date, latest_version_date, license, versions, source_vendor, source_component, git_created_at, git_updated_at, git_pushed_at, git_watchers, git_issues, git_forks, git_license, source_mine_id, purl_name, source_purl_name, verified, license_id, git_license_id) values (1, 'taballa.hp-PD', 'tablestyle', '2013-07-05', '2013-08-26', 'MIT', 8, null, null, null, null, null, null, null, null, null, null, 'tablestyle', null, null, 5614, 9999); -insert into projects (mine_id, vendor, component, first_version_date, latest_version_date, license, versions, source_vendor, source_component, git_created_at, git_updated_at, git_pushed_at, git_watchers, git_issues, git_forks, git_license, source_mine_id, purl_name, source_purl_name, verified, license_id, git_license_id) values (2, 'Sindre Sorhus', 'electron-debug', '2015-06-01', '2020-12-21', 'MIT', 28, 'sindresorhus', 'electron-debug', '2015-06-01', '2022-01-10', '2021-01-23', 693, 11, 55, 'MIT', 5, 'electron-debug', 'sindresorhus/electron-debug', '2022-01-11', 5614, 9999); -insert into projects (mine_id, vendor, component, first_version_date, latest_version_date, license, versions, source_vendor, source_component, git_created_at, git_updated_at, git_pushed_at, git_watchers, git_issues, git_forks, git_license, source_mine_id, purl_name, source_purl_name, verified, license_id, git_license_id) values (2, 'Shane Harris', 'node-blob', '2019-03-21', '2019-03-21', 'MIT', 2, 'shaneharris', 'node-blob', null, null, null, null, null, null, null, 5, 'node-blob', 'shaneharris/node-blob', '2021-05-24', 5614, 9999); -insert into projects (mine_id, vendor, component, first_version_date, latest_version_date, license, versions, source_vendor, source_component, git_created_at, git_updated_at, git_pushed_at, git_watchers, git_issues, git_forks, git_license, source_mine_id, purl_name, source_purl_name, verified, license_id, git_license_id) values (2, 'Gergely Hornich', 'sort-paths', '2016-09-03', '2018-08-18', 'MIT', 3, 'ghornich', 'sort-paths', null, null, null, null, null, null, null, 5, 'sort-paths', 'ghornich/sort-paths', '2021-05-24', 5614, 9999); -insert into projects (mine_id, vendor, component, first_version_date, latest_version_date, license, versions, source_vendor, source_component, git_created_at, git_updated_at, git_pushed_at, git_watchers, git_issues, git_forks, git_license, source_mine_id, purl_name, source_purl_name, verified, license_id, git_license_id) values (2, 'David Frank', 'node-fetch', '2015-01-27', '2021-12-19', 'MIT', 69, 'bitinn', 'node-fetch', null, null, null, null, null, null, null, 5, 'node-fetch', 'bitinn/node-fetch', '2021-05-24', 5614, 9999); -insert into projects (mine_id, vendor, component, first_version_date, latest_version_date, license, versions, source_vendor, source_component, git_created_at, git_updated_at, git_pushed_at, git_watchers, git_issues, git_forks, git_license, source_mine_id, purl_name, source_purl_name, verified, license_id, git_license_id) values (2, 'npmjs', 'chart.js', '2014-07-08', '2021-12-23', 'MIT', 77, 'chartjs', 'Chart.js', '2013-03-17', '2022-01-11', '2022-01-11', 55830, 113, 11333, 'MIT', 5, 'chart.js', 'chartjs/chart.js', '2022-01-11', 5614, 9999); -insert into projects (mine_id, vendor, component, first_version_date, latest_version_date, license, versions, source_vendor, source_component, git_created_at, git_updated_at, git_pushed_at, git_watchers, git_issues, git_forks, git_license, source_mine_id, purl_name, source_purl_name, verified, license_id, git_license_id) values (2, 'Sindre Sorhus', 'p-queue', '2016-10-28', '2021-04-07', 'MIT', 34, 'sindresorhus', 'p-queue', '2016-10-28', '2022-01-12', '2021-12-15', 1879, 31, 136, 'MIT', 5, 'p-queue', 'sindresorhus/p-queue', '2022-01-11', 5614, 9999); -insert into projects (mine_id, vendor, component, first_version_date, latest_version_date, license, versions, source_vendor, source_component, git_created_at, git_updated_at, git_pushed_at, git_watchers, git_issues, git_forks, git_license, source_mine_id, purl_name, source_purl_name, verified, license_id, git_license_id) values (2, 'Ben Newman', 'regenerator-runtime', '2014-07-04', '2021-07-22', 'MIT', 27, 'facebook', 'regenerator', '2013-10-05', '2022-01-05', '2022-01-11', 3620, 77, 1186, 'MIT', 5, 'regenerator-runtime', 'facebook/regenerator', '2022-01-11', 5614, 9999); -insert into projects (mine_id, vendor, component, first_version_date, latest_version_date, license, versions, source_vendor, source_component, git_created_at, git_updated_at, git_pushed_at, git_watchers, git_issues, git_forks, git_license, source_mine_id, purl_name, source_purl_name, verified, license_id, git_license_id) values (2, 'Conor Hastings', 'react-syntax-highlighter', '2016-01-27', '2021-11-12', 'MIT', 121, 'react-syntax-highlighter', 'react-syntax-highlighter', '2016-01-27', '2022-01-11', '2021-11-15', 2449, 75, 195, 'MIT', 5, 'react-syntax-highlighter', 'react-syntax-highlighter/react-syntax-highlighter', '2022-01-11', 5614, 9999); -insert into projects (mine_id, vendor, component, first_version_date, latest_version_date, license, versions, source_vendor, source_component, git_created_at, git_updated_at, git_pushed_at, git_watchers, git_issues, git_forks, git_license, source_mine_id, purl_name, source_purl_name, verified, license_id, git_license_id) values (2, 'npmjs', 'source-map-support', '2013-01-18', '2021-11-19', 'MIT', 66, 'evanw', 'node-source-map-support', '2013-01-18', '2022-01-11', '2022-01-10', 1953, 102, 226, 'MIT', 5, 'source-map-support', 'evanw/node-source-map-support', '2022-01-11', 5614, 9999); -insert into projects (mine_id, vendor, component, first_version_date, latest_version_date, license, versions, source_vendor, source_component, git_created_at, git_updated_at, git_pushed_at, git_watchers, git_issues, git_forks, git_license, source_mine_id, purl_name, source_purl_name, verified, license_id, git_license_id) values (2, 'Etienne Lemay', 'react-dom', '2014-05-06', '2021-12-24', 'MIT', 694, 'facebook', 'react', '2013-05-24', '2022-01-12', '2022-01-11', 180572, 915, 36701, 'MIT', 5, 'react-dom', 'facebook/react', '2022-01-11', 5614, 9999); -insert into projects (mine_id, vendor, component, first_version_date, latest_version_date, license, versions, source_vendor, source_component, git_created_at, git_updated_at, git_pushed_at, git_watchers, git_issues, git_forks, git_license, source_mine_id, purl_name, source_purl_name, verified, license_id, git_license_id) values (2, 'npmjs', 'isbinaryfile', '2012-10-09', '2021-04-29', 'MIT', 30, 'gjtorikian', 'isBinaryFile', '2012-10-08', '2021-11-24', '2021-09-24', 141, 3, 20, 'MIT', 5, 'isbinaryfile', 'gjtorikian/isbinaryfile', '2022-01-11', 5614, 9999); -insert into projects (mine_id, vendor, component, first_version_date, latest_version_date, license, versions, source_vendor, source_component, git_created_at, git_updated_at, git_pushed_at, git_watchers, git_issues, git_forks, git_license, source_mine_id, purl_name, source_purl_name, verified, license_id, git_license_id) values (2, 'Vladimir Krivosheev', 'electron-updater', '2015-05-01', '2021-12-01', 'MIT', 224, 'electron-userland', 'electron-builder', '2015-05-21', '2022-01-12', '2022-01-12', 11707, 308, 1471, 'MIT', 5, 'electron-updater', 'electron-userland/electron-builder', '2022-01-11', 5614, 9999); -insert into projects (mine_id, vendor, component, first_version_date, latest_version_date, license, versions, source_vendor, source_component, git_created_at, git_updated_at, git_pushed_at, git_watchers, git_issues, git_forks, git_license, source_mine_id, purl_name, source_purl_name, verified, license_id, git_license_id) values (2, 'Alexey Prokhorov', 'electron-log', '2016-05-02', '2021-12-27', 'MIT', 101, 'megahertz', 'electron-log', '2016-05-02', '2022-01-10', '2021-12-27', 899, 11, 117, 'MIT', 5, 'electron-log', 'megahertz/electron-log', '2022-01-11', 5614, 9999); -insert into projects (mine_id, vendor, component, first_version_date, latest_version_date, license, versions, source_vendor, source_component, git_created_at, git_updated_at, git_pushed_at, git_watchers, git_issues, git_forks, git_license, source_mine_id, purl_name, source_purl_name, verified, license_id, git_license_id) values (2, 'Jake Zatecky', 'react-checkbox-tree', '2016-02-04', '2021-08-09', 'MIT', 47, 'jakezatecky', 'react-checkbox-tree', '2016-02-04', '2022-01-09', '2022-01-03', 552, 80, 165, 'MIT', 5, 'react-checkbox-tree', 'jakezatecky/react-checkbox-tree', '2022-01-11', 5614, 9999); -insert into projects (mine_id, vendor, component, first_version_date, latest_version_date, license, versions, source_vendor, source_component, git_created_at, git_updated_at, git_pushed_at, git_watchers, git_issues, git_forks, git_license, source_mine_id, purl_name, source_purl_name, verified, license_id, git_license_id) values (2, 'React Training', 'history', '2012-04-29', '2021-12-17', 'MIT', 99, 'ReactTraining', 'history', '2015-07-18', '2021-08-12', '2021-08-12', 7099, 115, 841, 'MIT', 5, 'history', 'reacttraining/history', '2021-08-12', 5614, 9999); -insert into projects (mine_id, vendor, component, first_version_date, latest_version_date, license, versions, source_vendor, source_component, git_created_at, git_updated_at, git_pushed_at, git_watchers, git_issues, git_forks, git_license, source_mine_id, purl_name, source_purl_name, verified, license_id, git_license_id) values (2, 'Nikhil Marathe', 'uuid', '2011-03-31', '2021-11-29', 'MIT', 34, 'uuidjs', 'uuid', '2010-12-28', '2022-01-11', '2022-01-04', 11878, 20, 797, 'MIT', 5, 'uuid', 'uuidjs/uuid', '2022-01-11', 5614, 9999); -insert into projects (mine_id, vendor, component, first_version_date, latest_version_date, license, versions, source_vendor, source_component, git_created_at, git_updated_at, git_pushed_at, git_watchers, git_issues, git_forks, git_license, source_mine_id, purl_name, source_purl_name, verified, license_id, git_license_id) values (2, 'Jeff Barczewski', 'react', '2011-10-26', '2021-12-28', 'MIT', 739, 'facebook', 'react', '2013-05-24', '2022-01-12', '2022-01-11', 180572, 915, 36701, 'MIT', 5, 'react', 'facebook/react', '2022-01-11', 5614, 9999); -insert into projects (mine_id, vendor, component, first_version_date, latest_version_date, license, versions, source_vendor, source_component, git_created_at, git_updated_at, git_pushed_at, git_watchers, git_issues, git_forks, git_license, source_mine_id, purl_name, source_purl_name, verified, license_id, git_license_id) values (2, 'React Training', 'react-router-dom', '2016-12-14', '2021-12-17', 'MIT', 64, 'ReactTraining', 'react-router', '2014-05-16', '2021-08-12', '2021-08-11', 43727, 59, 8505, 'MIT', 5, 'react-router-dom', 'reacttraining/react-router', '2021-08-12', 5614, 9999); -insert into projects (mine_id, vendor, component, first_version_date, latest_version_date, license, versions, source_vendor, source_component, git_created_at, git_updated_at, git_pushed_at, git_watchers, git_issues, git_forks, git_license, source_mine_id, purl_name, source_purl_name, verified, license_id, git_license_id) values (2, 'Felix Geisendörfer', 'form-data', '2011-05-16', '2021-02-15', 'MIT', 38, 'form-data', 'form-data', '2011-05-16', '2022-01-11', '2021-11-30', 1962, 111, 256, 'MIT', 5, 'form-data', 'form-data/form-data', '2022-01-11', 5614, 9999); -insert into projects (mine_id, vendor, component, first_version_date, latest_version_date, license, versions, source_vendor, source_component, git_created_at, git_updated_at, git_pushed_at, git_watchers, git_issues, git_forks, git_license, source_mine_id, purl_name, source_purl_name, verified, license_id, git_license_id) values (2, 'Toru Nagashima', 'abort-controller', '2017-09-29', '2019-03-30', 'MIT', 11, 'mysticatea', 'abort-controller', '2017-09-29', '2021-12-30', '2021-03-30', 258, 17, 25, 'MIT', 5, 'abort-controller', 'mysticatea/abort-controller', '2022-01-11', 5614, 9999); -insert into projects (mine_id, vendor, component, first_version_date, latest_version_date, license, versions, source_vendor, source_component, git_created_at, git_updated_at, git_pushed_at, git_watchers, git_issues, git_forks, git_license, source_mine_id, purl_name, source_purl_name, verified, license_id, git_license_id) values (2, 'tomkp', 'react-split-pane', '2015-06-14', '2020-08-10', 'MIT', 89, 'tomkp', 'react-split-pane', '2015-03-06', '2022-01-11', '2021-11-26', 2689, 142, 345, 'MIT', 5, 'react-split-pane', 'tomkp/react-split-pane', '2022-01-11', 5614, 9999); -insert into projects (mine_id, vendor, component, first_version_date, latest_version_date, license, versions, source_vendor, source_component, git_created_at, git_updated_at, git_pushed_at, git_watchers, git_issues, git_forks, git_license, source_mine_id, purl_name, source_purl_name, verified, license_id, git_license_id) values (3, 'Audrey Roy Greenfeld', 'binaryornot', '2013-08-17', '2017-08-03', 'BSD', 8, 'audreyr', 'binaryornot', null, null, null, null, null, null, null, 5, 'binaryornot', 'audreyr/binaryornot', '2021-05-24', 1378, 9999); -insert into projects (mine_id, vendor, component, first_version_date, latest_version_date, license, versions, source_vendor, source_component, git_created_at, git_updated_at, git_pushed_at, git_watchers, git_issues, git_forks, git_license, source_mine_id, purl_name, source_purl_name, verified, license_id, git_license_id) values (3, 'The gRPC Authors', 'grpcio', '2015-03-30', '2021-12-16', 'Apache License 2.0', 165, null, null, null, null, null, null, null, null, null, null, 'grpcio', null, null, 850, 9999); -insert into projects (mine_id, vendor, component, first_version_date, latest_version_date, license, versions, source_vendor, source_component, git_created_at, git_updated_at, git_pushed_at, git_watchers, git_issues, git_forks, git_license, source_mine_id, purl_name, source_purl_name, verified, license_id, git_license_id) values (3, 'Kenneth Reitz', 'requests', '2011-02-14', '2022-01-05', 'Apache 2.0', 145, 'psf', 'requests', '2011-02-13', '2022-01-11', '2022-01-11', 46668, 221, 8589, 'Apache-2.0', 5, 'requests', 'psf/requests', '2022-01-11', 552, 9999); -insert into projects (mine_id, vendor, component, first_version_date, latest_version_date, license, versions, source_vendor, source_component, git_created_at, git_updated_at, git_pushed_at, git_watchers, git_issues, git_forks, git_license, source_mine_id, purl_name, source_purl_name, verified, license_id, git_license_id) values (3, 'Giorgos Verigakis', 'progress', '2012-04-18', '2021-07-28', 'ISC', 9, 'verigak', 'progress', '2012-04-18', '2022-01-11', '2021-11-15', 1119, 28, 161, null, 5, 'progress', 'verigak/progress', '2022-01-11', 4863, 9999); -insert into projects (mine_id, vendor, component, first_version_date, latest_version_date, license, versions, source_vendor, source_component, git_created_at, git_updated_at, git_pushed_at, git_watchers, git_issues, git_forks, git_license, source_mine_id, purl_name, source_purl_name, verified, license_id, git_license_id) values (3, 'pypi', 'protobuf', '2008-07-10', '2021-10-29', '3-Clause BSD License', 92, 'protocolbuffers', 'protobuf', '2014-08-26', '2022-01-12', '2022-01-11', 52549, 1018, 13622, null, 5, 'protobuf', 'protocolbuffers/protobuf', '2022-01-11', 109, 9999); -insert into projects (mine_id, vendor, component, first_version_date, latest_version_date, license, versions, source_vendor, source_component, git_created_at, git_updated_at, git_pushed_at, git_watchers, git_issues, git_forks, git_license, source_mine_id, purl_name, source_purl_name, verified, license_id, git_license_id) values (3, 'The ICRAR DIA Team', 'crc32c', '2017-06-07', '2021-06-25', 'LGPLv2.1+', 13, 'ICRAR', 'crc32c', '2017-06-07', '2021-10-15', '2021-06-25', 26, 0, 15, null, 5, 'crc32c', 'icrar/crc32c', '2022-01-11', 5236, 9999); +-- Test data only. The schema comes from testSchemaDDL in pkg/models/test_schema.go; do not add DDL here. +INSERT INTO projects (mine_id, vendor, component, first_version_date, versions, git_created_at, git_forks, source_mine_id, purl_name, source_purl_name, license_id, git_license_id) VALUES (1, 'taballa.hp-PD', 'tablestyle', '2013-07-05', 8, null, null, null, 'tablestyle', null, 5614, 9999); +INSERT INTO projects (mine_id, vendor, component, first_version_date, versions, git_created_at, git_forks, source_mine_id, purl_name, source_purl_name, license_id, git_license_id) VALUES (2, 'Sindre Sorhus', 'electron-debug', '2015-06-01', 28, '2015-06-01', 55, 5, 'electron-debug', 'sindresorhus/electron-debug', 5614, 9999); +INSERT INTO projects (mine_id, vendor, component, first_version_date, versions, git_created_at, git_forks, source_mine_id, purl_name, source_purl_name, license_id, git_license_id) VALUES (2, 'Shane Harris', 'node-blob', '2019-03-21', 2, null, null, 5, 'node-blob', 'shaneharris/node-blob', 5614, 9999); +INSERT INTO projects (mine_id, vendor, component, first_version_date, versions, git_created_at, git_forks, source_mine_id, purl_name, source_purl_name, license_id, git_license_id) VALUES (2, 'Gergely Hornich', 'sort-paths', '2016-09-03', 3, null, null, 5, 'sort-paths', 'ghornich/sort-paths', 5614, 9999); +INSERT INTO projects (mine_id, vendor, component, first_version_date, versions, git_created_at, git_forks, source_mine_id, purl_name, source_purl_name, license_id, git_license_id) VALUES (2, 'David Frank', 'node-fetch', '2015-01-27', 69, null, null, 5, 'node-fetch', 'bitinn/node-fetch', 5614, 9999); +INSERT INTO projects (mine_id, vendor, component, first_version_date, versions, git_created_at, git_forks, source_mine_id, purl_name, source_purl_name, license_id, git_license_id) VALUES (2, 'npmjs', 'chart.js', '2014-07-08', 77, '2013-03-17', 11333, 5, 'chart.js', 'chartjs/chart.js', 5614, 9999); +INSERT INTO projects (mine_id, vendor, component, first_version_date, versions, git_created_at, git_forks, source_mine_id, purl_name, source_purl_name, license_id, git_license_id) VALUES (2, 'Sindre Sorhus', 'p-queue', '2016-10-28', 34, '2016-10-28', 136, 5, 'p-queue', 'sindresorhus/p-queue', 5614, 9999); +INSERT INTO projects (mine_id, vendor, component, first_version_date, versions, git_created_at, git_forks, source_mine_id, purl_name, source_purl_name, license_id, git_license_id) VALUES (2, 'Ben Newman', 'regenerator-runtime', '2014-07-04', 27, '2013-10-05', 1186, 5, 'regenerator-runtime', 'facebook/regenerator', 5614, 9999); +INSERT INTO projects (mine_id, vendor, component, first_version_date, versions, git_created_at, git_forks, source_mine_id, purl_name, source_purl_name, license_id, git_license_id) VALUES (2, 'Conor Hastings', 'react-syntax-highlighter', '2016-01-27', 121, '2016-01-27', 195, 5, 'react-syntax-highlighter', 'react-syntax-highlighter/react-syntax-highlighter', 5614, 9999); +INSERT INTO projects (mine_id, vendor, component, first_version_date, versions, git_created_at, git_forks, source_mine_id, purl_name, source_purl_name, license_id, git_license_id) VALUES (2, 'npmjs', 'source-map-support', '2013-01-18', 66, '2013-01-18', 226, 5, 'source-map-support', 'evanw/node-source-map-support', 5614, 9999); +INSERT INTO projects (mine_id, vendor, component, first_version_date, versions, git_created_at, git_forks, source_mine_id, purl_name, source_purl_name, license_id, git_license_id) VALUES (2, 'Etienne Lemay', 'react-dom', '2014-05-06', 694, '2013-05-24', 36701, 5, 'react-dom', 'facebook/react', 5614, 9999); +INSERT INTO projects (mine_id, vendor, component, first_version_date, versions, git_created_at, git_forks, source_mine_id, purl_name, source_purl_name, license_id, git_license_id) VALUES (2, 'npmjs', 'isbinaryfile', '2012-10-09', 30, '2012-10-08', 20, 5, 'isbinaryfile', 'gjtorikian/isbinaryfile', 5614, 9999); +INSERT INTO projects (mine_id, vendor, component, first_version_date, versions, git_created_at, git_forks, source_mine_id, purl_name, source_purl_name, license_id, git_license_id) VALUES (2, 'Vladimir Krivosheev', 'electron-updater', '2015-05-01', 224, '2015-05-21', 1471, 5, 'electron-updater', 'electron-userland/electron-builder', 5614, 9999); +INSERT INTO projects (mine_id, vendor, component, first_version_date, versions, git_created_at, git_forks, source_mine_id, purl_name, source_purl_name, license_id, git_license_id) VALUES (2, 'Alexey Prokhorov', 'electron-log', '2016-05-02', 101, '2016-05-02', 117, 5, 'electron-log', 'megahertz/electron-log', 5614, 9999); +INSERT INTO projects (mine_id, vendor, component, first_version_date, versions, git_created_at, git_forks, source_mine_id, purl_name, source_purl_name, license_id, git_license_id) VALUES (2, 'Jake Zatecky', 'react-checkbox-tree', '2016-02-04', 47, '2016-02-04', 165, 5, 'react-checkbox-tree', 'jakezatecky/react-checkbox-tree', 5614, 9999); +INSERT INTO projects (mine_id, vendor, component, first_version_date, versions, git_created_at, git_forks, source_mine_id, purl_name, source_purl_name, license_id, git_license_id) VALUES (2, 'React Training', 'history', '2012-04-29', 99, '2015-07-18', 841, 5, 'history', 'reacttraining/history', 5614, 9999); +INSERT INTO projects (mine_id, vendor, component, first_version_date, versions, git_created_at, git_forks, source_mine_id, purl_name, source_purl_name, license_id, git_license_id) VALUES (2, 'Nikhil Marathe', 'uuid', '2011-03-31', 34, '2010-12-28', 797, 5, 'uuid', 'uuidjs/uuid', 5614, 9999); +INSERT INTO projects (mine_id, vendor, component, first_version_date, versions, git_created_at, git_forks, source_mine_id, purl_name, source_purl_name, license_id, git_license_id) VALUES (2, 'Jeff Barczewski', 'react', '2011-10-26', 739, '2013-05-24', 36701, 5, 'react', 'facebook/react', 5614, 9999); +INSERT INTO projects (mine_id, vendor, component, first_version_date, versions, git_created_at, git_forks, source_mine_id, purl_name, source_purl_name, license_id, git_license_id) VALUES (2, 'React Training', 'react-router-dom', '2016-12-14', 64, '2014-05-16', 8505, 5, 'react-router-dom', 'reacttraining/react-router', 5614, 9999); +INSERT INTO projects (mine_id, vendor, component, first_version_date, versions, git_created_at, git_forks, source_mine_id, purl_name, source_purl_name, license_id, git_license_id) VALUES (2, 'Felix Geisendörfer', 'form-data', '2011-05-16', 38, '2011-05-16', 256, 5, 'form-data', 'form-data/form-data', 5614, 9999); +INSERT INTO projects (mine_id, vendor, component, first_version_date, versions, git_created_at, git_forks, source_mine_id, purl_name, source_purl_name, license_id, git_license_id) VALUES (2, 'Toru Nagashima', 'abort-controller', '2017-09-29', 11, '2017-09-29', 25, 5, 'abort-controller', 'mysticatea/abort-controller', 5614, 9999); +INSERT INTO projects (mine_id, vendor, component, first_version_date, versions, git_created_at, git_forks, source_mine_id, purl_name, source_purl_name, license_id, git_license_id) VALUES (2, 'tomkp', 'react-split-pane', '2015-06-14', 89, '2015-03-06', 345, 5, 'react-split-pane', 'tomkp/react-split-pane', 5614, 9999); +INSERT INTO projects (mine_id, vendor, component, first_version_date, versions, git_created_at, git_forks, source_mine_id, purl_name, source_purl_name, license_id, git_license_id) VALUES (3, 'Audrey Roy Greenfeld', 'binaryornot', '2013-08-17', 8, null, null, 5, 'binaryornot', 'audreyr/binaryornot', 1378, 9999); +INSERT INTO projects (mine_id, vendor, component, first_version_date, versions, git_created_at, git_forks, source_mine_id, purl_name, source_purl_name, license_id, git_license_id) VALUES (3, 'The gRPC Authors', 'grpcio', '2015-03-30', 165, null, null, null, 'grpcio', null, 850, 9999); +INSERT INTO projects (mine_id, vendor, component, first_version_date, versions, git_created_at, git_forks, source_mine_id, purl_name, source_purl_name, license_id, git_license_id) VALUES (3, 'Kenneth Reitz', 'requests', '2011-02-14', 145, '2011-02-13', 8589, 5, 'requests', 'psf/requests', 552, 9999); +INSERT INTO projects (mine_id, vendor, component, first_version_date, versions, git_created_at, git_forks, source_mine_id, purl_name, source_purl_name, license_id, git_license_id) VALUES (3, 'Giorgos Verigakis', 'progress', '2012-04-18', 9, '2012-04-18', 161, 5, 'progress', 'verigak/progress', 4863, 9999); +INSERT INTO projects (mine_id, vendor, component, first_version_date, versions, git_created_at, git_forks, source_mine_id, purl_name, source_purl_name, license_id, git_license_id) VALUES (3, 'pypi', 'protobuf', '2008-07-10', 92, '2014-08-26', 13622, 5, 'protobuf', 'protocolbuffers/protobuf', 109, 9999); +INSERT INTO projects (mine_id, vendor, component, first_version_date, versions, git_created_at, git_forks, source_mine_id, purl_name, source_purl_name, license_id, git_license_id) VALUES (3, 'The ICRAR DIA Team', 'crc32c', '2017-06-07', 13, '2017-06-07', 15, 5, 'crc32c', 'icrar/crc32c', 5236, 9999); diff --git a/pkg/models/tests/purl.sql b/pkg/models/tests/purl.sql index acba7bd..bce9f99 100644 --- a/pkg/models/tests/purl.sql +++ b/pkg/models/tests/purl.sql @@ -1,59 +1,51 @@ -DROP TABLE IF EXISTS purls; -CREATE TABLE "purls" ( - "id" INTEGER NOT NULL, - "purl" TEXT NOT NULL UNIQUE, - PRIMARY KEY("id" AUTOINCREMENT) -); - - -INSERT INTO purls ("id", "purl") VALUES (1176, 'pkg:github/wpplugins/candidate-application-form'); -INSERT INTO purls ("id", "purl") VALUES (1646, 'pkg:rpm/opensuse/jbigkit'); -INSERT INTO purls ("id", "purl") VALUES (1739, 'pkg:rpm/fedora/capstone'); -INSERT INTO purls ("id", "purl") VALUES (2429, 'pkg:github/ruxkor/checkinstall'); -INSERT INTO purls ("id", "purl") VALUES (2595, 'pkg:deb/ubuntu/screen-resolution-extra'); -INSERT INTO purls ("id", "purl") VALUES (3023, 'pkg:deb/debian/jbigkit'); -INSERT INTO purls ("id", "purl") VALUES (4048, 'pkg:github/hapijs/call'); -INSERT INTO purls ("id", "purl") VALUES (5153, 'pkg:deb/ubuntu/jbigkit'); -INSERT INTO purls ("id", "purl") VALUES (6062, 'pkg:rpm/opensuse/lxd'); -INSERT INTO purls ("id", "purl") VALUES (6121, 'pkg:github/capstone-engine/capstone'); -INSERT INTO purls ("id", "purl") VALUES (6781, 'pkg:npm/comb'); -INSERT INTO purls ("id", "purl") VALUES (7072, 'pkg:rpm/opensuse/snapd'); -INSERT INTO purls ("id", "purl") VALUES (8505, 'pkg:github/calderawp/caldera-forms'); -INSERT INTO purls ("id", "purl") VALUES (9550, 'pkg:gitlab/redhat/jbigkit'); -INSERT INTO purls ("id", "purl") VALUES (9741, 'pkg:github/cantemo/portal-docker'); -INSERT INTO purls ("id", "purl") VALUES (10060, 'pkg:maven/org.webjars.npm/cached-path-relative'); -INSERT INTO purls ("id", "purl") VALUES (10316, 'pkg:npm/%40hapi/call'); -INSERT INTO purls ("id", "purl") VALUES (10569, 'pkg:rpm/fedora/snapd'); -INSERT INTO purls ("id", "purl") VALUES (10692, 'pkg:rpm/centos/jbigkit'); -INSERT INTO purls ("id", "purl") VALUES (11242, 'pkg:deb/ubuntu/snapd'); -INSERT INTO purls ("id", "purl") VALUES (11524, 'pkg:github/thtas/campaignmonitor'); -INSERT INTO purls ("id", "purl") VALUES (11962, 'pkg:github/maas/maas'); -INSERT INTO purls ("id", "purl") VALUES (12025, 'pkg:github/wp-plugins/caldera-forms'); -INSERT INTO purls ("id", "purl") VALUES (12377, 'pkg:github/cunaedy/cart-engine'); -INSERT INTO purls ("id", "purl") VALUES (14558, 'pkg:github/selinuxproject/selinux'); -INSERT INTO purls ("id", "purl") VALUES (14642, 'pkg:deb/debian/capstone'); -INSERT INTO purls ("id", "purl") VALUES (15022, 'pkg:github/lxc/lxd'); -INSERT INTO purls ("id", "purl") VALUES (17269, 'pkg:github/wpplugins/caldera-forms'); -INSERT INTO purls ("id", "purl") VALUES (17342, 'pkg:rpm/opensuse/capstone'); -INSERT INTO purls ("id", "purl") VALUES (17507, 'pkg:github/wp-plugins/konnichiwa'); -INSERT INTO purls ("id", "purl") VALUES (17949, 'pkg:deb/debian/snapd'); -INSERT INTO purls ("id", "purl") VALUES (18047, 'pkg:deb/ubuntu/maas'); -INSERT INTO purls ("id", "purl") VALUES (18591, 'pkg:deb/ubuntu/node-cached-path-relative'); -INSERT INTO purls ("id", "purl") VALUES (19304, 'pkg:github/c2fo/comb'); -INSERT INTO purls ("id", "purl") VALUES (19906, 'pkg:github/pld-linux/jbigkit/'); -INSERT INTO purls ("id", "purl") VALUES (20614, 'pkg:deb/ubuntu/update-manager'); -INSERT INTO purls ("id", "purl") VALUES (22410, 'pkg:github/snapcore/snapd'); -INSERT INTO purls ("id", "purl") VALUES (22665, 'pkg:deb/debian/node-cached-path-relative'); -INSERT INTO purls ("id", "purl") VALUES (22770, 'pkg:github/candlepin/candlepin'); -INSERT INTO purls ("id", "purl") VALUES (22887, 'pkg:github/ashaffer/cached-path-relative'); -INSERT INTO purls ("id", "purl") VALUES (22890, 'pkg:npm/cached-path-relative'); -INSERT INTO purls ("id", "purl") VALUES (23242, 'pkg:deb/ubuntu/selinux'); -INSERT INTO purls ("id", "purl") VALUES (23260, 'pkg:rpm/fedora/jbigkit'); -INSERT INTO purls ("id", "purl") VALUES (24096, 'pkg:github/giuliomoro/checkinstall'); -INSERT INTO purls ("id", "purl") VALUES (24116, 'pkg:github/swatinem/rust-cache'); -INSERT INTO purls ("id", "purl") VALUES (24539, 'pkg:github/tseliot/screen-resolution-extra'); -INSERT INTO purls ("id", "purl") VALUES (24815, 'pkg:npm/calmquist.static-server'); -INSERT INTO purls ("id", "purl") VALUES (25014, 'pkg:github/jaemk/cached'); -INSERT INTO purls ("id", "purl") VALUES (25794, 'pkg:github/wp-plugins/candidate-application-form'); -INSERT INTO purls ("id", "purl") VALUES (26613, 'pkg:github/ubports/ubuntu-download-manager'); - +-- Test data only. The schema comes from testSchemaDDL in pkg/models/test_schema.go; do not add DDL here. +INSERT INTO purls (id, purl) VALUES (1176, 'pkg:github/wpplugins/candidate-application-form'); +INSERT INTO purls (id, purl) VALUES (1646, 'pkg:rpm/opensuse/jbigkit'); +INSERT INTO purls (id, purl) VALUES (1739, 'pkg:rpm/fedora/capstone'); +INSERT INTO purls (id, purl) VALUES (2429, 'pkg:github/ruxkor/checkinstall'); +INSERT INTO purls (id, purl) VALUES (2595, 'pkg:deb/ubuntu/screen-resolution-extra'); +INSERT INTO purls (id, purl) VALUES (3023, 'pkg:deb/debian/jbigkit'); +INSERT INTO purls (id, purl) VALUES (4048, 'pkg:github/hapijs/call'); +INSERT INTO purls (id, purl) VALUES (5153, 'pkg:deb/ubuntu/jbigkit'); +INSERT INTO purls (id, purl) VALUES (6062, 'pkg:rpm/opensuse/lxd'); +INSERT INTO purls (id, purl) VALUES (6121, 'pkg:github/capstone-engine/capstone'); +INSERT INTO purls (id, purl) VALUES (6781, 'pkg:npm/comb'); +INSERT INTO purls (id, purl) VALUES (7072, 'pkg:rpm/opensuse/snapd'); +INSERT INTO purls (id, purl) VALUES (8505, 'pkg:github/calderawp/caldera-forms'); +INSERT INTO purls (id, purl) VALUES (9550, 'pkg:gitlab/redhat/jbigkit'); +INSERT INTO purls (id, purl) VALUES (9741, 'pkg:github/cantemo/portal-docker'); +INSERT INTO purls (id, purl) VALUES (10060, 'pkg:maven/org.webjars.npm/cached-path-relative'); +INSERT INTO purls (id, purl) VALUES (10316, 'pkg:npm/%40hapi/call'); +INSERT INTO purls (id, purl) VALUES (10569, 'pkg:rpm/fedora/snapd'); +INSERT INTO purls (id, purl) VALUES (10692, 'pkg:rpm/centos/jbigkit'); +INSERT INTO purls (id, purl) VALUES (11242, 'pkg:deb/ubuntu/snapd'); +INSERT INTO purls (id, purl) VALUES (11524, 'pkg:github/thtas/campaignmonitor'); +INSERT INTO purls (id, purl) VALUES (11962, 'pkg:github/maas/maas'); +INSERT INTO purls (id, purl) VALUES (12025, 'pkg:github/wp-plugins/caldera-forms'); +INSERT INTO purls (id, purl) VALUES (12377, 'pkg:github/cunaedy/cart-engine'); +INSERT INTO purls (id, purl) VALUES (14558, 'pkg:github/selinuxproject/selinux'); +INSERT INTO purls (id, purl) VALUES (14642, 'pkg:deb/debian/capstone'); +INSERT INTO purls (id, purl) VALUES (15022, 'pkg:github/lxc/lxd'); +INSERT INTO purls (id, purl) VALUES (17269, 'pkg:github/wpplugins/caldera-forms'); +INSERT INTO purls (id, purl) VALUES (17342, 'pkg:rpm/opensuse/capstone'); +INSERT INTO purls (id, purl) VALUES (17507, 'pkg:github/wp-plugins/konnichiwa'); +INSERT INTO purls (id, purl) VALUES (17949, 'pkg:deb/debian/snapd'); +INSERT INTO purls (id, purl) VALUES (18047, 'pkg:deb/ubuntu/maas'); +INSERT INTO purls (id, purl) VALUES (18591, 'pkg:deb/ubuntu/node-cached-path-relative'); +INSERT INTO purls (id, purl) VALUES (19304, 'pkg:github/c2fo/comb'); +INSERT INTO purls (id, purl) VALUES (19906, 'pkg:github/pld-linux/jbigkit/'); +INSERT INTO purls (id, purl) VALUES (20614, 'pkg:deb/ubuntu/update-manager'); +INSERT INTO purls (id, purl) VALUES (22410, 'pkg:github/snapcore/snapd'); +INSERT INTO purls (id, purl) VALUES (22665, 'pkg:deb/debian/node-cached-path-relative'); +INSERT INTO purls (id, purl) VALUES (22770, 'pkg:github/candlepin/candlepin'); +INSERT INTO purls (id, purl) VALUES (22887, 'pkg:github/ashaffer/cached-path-relative'); +INSERT INTO purls (id, purl) VALUES (22890, 'pkg:npm/cached-path-relative'); +INSERT INTO purls (id, purl) VALUES (23242, 'pkg:deb/ubuntu/selinux'); +INSERT INTO purls (id, purl) VALUES (23260, 'pkg:rpm/fedora/jbigkit'); +INSERT INTO purls (id, purl) VALUES (24096, 'pkg:github/giuliomoro/checkinstall'); +INSERT INTO purls (id, purl) VALUES (24116, 'pkg:github/swatinem/rust-cache'); +INSERT INTO purls (id, purl) VALUES (24539, 'pkg:github/tseliot/screen-resolution-extra'); +INSERT INTO purls (id, purl) VALUES (24815, 'pkg:npm/calmquist.static-server'); +INSERT INTO purls (id, purl) VALUES (25014, 'pkg:github/jaemk/cached'); +INSERT INTO purls (id, purl) VALUES (25794, 'pkg:github/wp-plugins/candidate-application-form'); +INSERT INTO purls (id, purl) VALUES (26613, 'pkg:github/ubports/ubuntu-download-manager'); diff --git a/pkg/models/tests/short_cpe.sql b/pkg/models/tests/short_cpe.sql index 272f3e3..bd93c89 100644 --- a/pkg/models/tests/short_cpe.sql +++ b/pkg/models/tests/short_cpe.sql @@ -1,30 +1,24 @@ -DROP TABLE IF EXISTS short_cpes; -CREATE TABLE "short_cpes" ( - "id" INTEGER NOT NULL, - "short_cpe" TEXT NOT NULL UNIQUE, - PRIMARY KEY("id" AUTOINCREMENT) -); - -INSERT INTO short_cpes ("id", "short_cpe") VALUES (4772, 'cpe:2.3:a:c2fo:comb'); -INSERT INTO short_cpes ("id", "short_cpe") VALUES (4970, 'cpe:2.3:a:canonical:ubuntu-core-launcher'); -INSERT INTO short_cpes ("id", "short_cpe") VALUES (6591, 'cpe:2.3:a:cantemo:portal'); -INSERT INTO short_cpes ("id", "short_cpe") VALUES (6930, 'cpe:2.3:a:cached-path-relative_project:cached-path-relative'); -INSERT INTO short_cpes ("id", "short_cpe") VALUES (8270, 'cpe:2.3:a:candidate-application-form_project:candidate-application-form'); -INSERT INTO short_cpes ("id", "short_cpe") VALUES (8296, 'cpe:2.3:a:capstone-engine:capstone'); -INSERT INTO short_cpes ("id", "short_cpe") VALUES (17559, 'cpe:2.3:a:canonical:checkinstall'); -INSERT INTO short_cpes ("id", "short_cpe") VALUES (9517, 'cpe:2.3:a:cazche_project:cache'); -INSERT INTO short_cpes ("id", "short_cpe") VALUES (11798, 'cpe:2.3:a:canonical:update-manager'); -INSERT INTO short_cpes ("id", "short_cpe") VALUES (24723, 'cpe:2.3:a:calmquist.static-server_project:calmquist.static-server'); -INSERT INTO short_cpes ("id", "short_cpe") VALUES (32816, 'cpe:2.3:a:cambridge_enterprise:jbig-kit'); -INSERT INTO short_cpes ("id", "short_cpe") VALUES (20819, 'cpe:2.3:a:canonical:screen-resolution-extra'); -INSERT INTO short_cpes ("id", "short_cpe") VALUES (31044, 'cpe:2.3:a:calendarscripts:konnichiwa'); -INSERT INTO short_cpes ("id", "short_cpe") VALUES (23153, 'cpe:2.3:a:candlepinproject:candlepin'); -INSERT INTO short_cpes ("id", "short_cpe") VALUES (36858, 'cpe:2.3:a:canonical:lxd'); -INSERT INTO short_cpes ("id", "short_cpe") VALUES (40143, 'cpe:2.3:a:calderalabs:caldera_forms'); -INSERT INTO short_cpes ("id", "short_cpe") VALUES (40676, 'cpe:2.3:a:c97:cart_engine'); -INSERT INTO short_cpes ("id", "short_cpe") VALUES (44876, 'cpe:2.3:a:campaign_monitor_project:campaign_monitor'); -INSERT INTO short_cpes ("id", "short_cpe") VALUES (48168, 'cpe:2.3:a:canonical:selinux'); -INSERT INTO short_cpes ("id", "short_cpe") VALUES (48783, 'cpe:2.3:a:canonical:ubuntu_download_manager'); -INSERT INTO short_cpes ("id", "short_cpe") VALUES (50021, 'cpe:2.3:a:call_project:call'); -INSERT INTO short_cpes ("id", "short_cpe") VALUES (54486, 'cpe:2.3:a:canonical:metal_as_a_service'); -INSERT INTO short_cpes ("id", "short_cpe") VALUES (54546, 'cpe:2.3:a:cached_project:cached'); \ No newline at end of file +-- Test data only. The schema comes from testSchemaDDL in pkg/models/test_schema.go; do not add DDL here. +INSERT INTO short_cpes (id) VALUES (4772); +INSERT INTO short_cpes (id) VALUES (4970); +INSERT INTO short_cpes (id) VALUES (6591); +INSERT INTO short_cpes (id) VALUES (6930); +INSERT INTO short_cpes (id) VALUES (8270); +INSERT INTO short_cpes (id) VALUES (8296); +INSERT INTO short_cpes (id) VALUES (17559); +INSERT INTO short_cpes (id) VALUES (9517); +INSERT INTO short_cpes (id) VALUES (11798); +INSERT INTO short_cpes (id) VALUES (24723); +INSERT INTO short_cpes (id) VALUES (32816); +INSERT INTO short_cpes (id) VALUES (20819); +INSERT INTO short_cpes (id) VALUES (31044); +INSERT INTO short_cpes (id) VALUES (23153); +INSERT INTO short_cpes (id) VALUES (36858); +INSERT INTO short_cpes (id) VALUES (40143); +INSERT INTO short_cpes (id) VALUES (40676); +INSERT INTO short_cpes (id) VALUES (44876); +INSERT INTO short_cpes (id) VALUES (48168); +INSERT INTO short_cpes (id) VALUES (48783); +INSERT INTO short_cpes (id) VALUES (50021); +INSERT INTO short_cpes (id) VALUES (54486); +INSERT INTO short_cpes (id) VALUES (54546); diff --git a/pkg/models/tests/short_cpe_purl.sql b/pkg/models/tests/short_cpe_purl.sql index 0fb3648..d33278b 100644 --- a/pkg/models/tests/short_cpe_purl.sql +++ b/pkg/models/tests/short_cpe_purl.sql @@ -1,61 +1,51 @@ -DROP TABLE IF EXISTS short_cpe_purl; - -CREATE TABLE "short_cpe_purl" -( - cpe_id integer NOT NULL, - purl_id integer NOT NULL, - purl text, - short_cpe text, - PRIMARY KEY(cpe_id,purl_id) -); - -INSERT INTO "short_cpe_purl" ("cpe_id", "purl_id", "purl", "short_cpe") VALUES (4772, 19304, 'pkg:github/c2fo/comb', 'cpe:2.3:a:c2fo:comb'); -INSERT INTO "short_cpe_purl" ("cpe_id", "purl_id", "purl", "short_cpe") VALUES (4772, 6781, 'pkg:npm/comb', 'cpe:2.3:a:c2fo:comb'); -INSERT INTO "short_cpe_purl" ("cpe_id", "purl_id", "purl", "short_cpe") VALUES (40676, 12377, 'pkg:github/cunaedy/cart-engine', 'cpe:2.3:a:c97:cart_engine'); -INSERT INTO "short_cpe_purl" ("cpe_id", "purl_id", "purl", "short_cpe") VALUES (6930, 22887, 'pkg:github/ashaffer/cached-path-relative', 'cpe:2.3:a:cached-path-relative_project:cached-path-relative'); -INSERT INTO "short_cpe_purl" ("cpe_id", "purl_id", "purl", "short_cpe") VALUES (6930, 22665, 'pkg:deb/debian/node-cached-path-relative', 'cpe:2.3:a:cached-path-relative_project:cached-path-relative'); -INSERT INTO "short_cpe_purl" ("cpe_id", "purl_id", "purl", "short_cpe") VALUES (6930, 18591, 'pkg:deb/ubuntu/node-cached-path-relative', 'cpe:2.3:a:cached-path-relative_project:cached-path-relative'); -INSERT INTO "short_cpe_purl" ("cpe_id", "purl_id", "purl", "short_cpe") VALUES (6930, 10060, 'pkg:maven/org.webjars.npm/cached-path-relative', 'cpe:2.3:a:cached-path-relative_project:cached-path-relative'); -INSERT INTO "short_cpe_purl" ("cpe_id", "purl_id", "purl", "short_cpe") VALUES (6930, 22890, 'pkg:npm/cached-path-relative', 'cpe:2.3:a:cached-path-relative_project:cached-path-relative'); -INSERT INTO "short_cpe_purl" ("cpe_id", "purl_id", "purl", "short_cpe") VALUES (54546, 25014, 'pkg:github/jaemk/cached', 'cpe:2.3:a:cached_project:cached'); -INSERT INTO "short_cpe_purl" ("cpe_id", "purl_id", "purl", "short_cpe") VALUES (9517, 24116, 'pkg:github/swatinem/rust-cache', 'cpe:2.3:a:cazche_project:cache'); -INSERT INTO "short_cpe_purl" ("cpe_id", "purl_id", "purl", "short_cpe") VALUES (40143, 8505, 'pkg:github/calderawp/caldera-forms', 'cpe:2.3:a:calderalabs:caldera_forms'); -INSERT INTO "short_cpe_purl" ("cpe_id", "purl_id", "purl", "short_cpe") VALUES (40143, 12025, 'pkg:github/wp-plugins/caldera-forms', 'cpe:2.3:a:calderalabs:caldera_forms'); -INSERT INTO "short_cpe_purl" ("cpe_id", "purl_id", "purl", "short_cpe") VALUES (40143, 17269, 'pkg:github/wpplugins/caldera-forms', 'cpe:2.3:a:calderalabs:caldera_forms'); -INSERT INTO "short_cpe_purl" ("cpe_id", "purl_id", "purl", "short_cpe") VALUES (31044, 17507, 'pkg:github/wp-plugins/konnichiwa', 'cpe:2.3:a:calendarscripts:konnichiwa'); -INSERT INTO "short_cpe_purl" ("cpe_id", "purl_id", "purl", "short_cpe") VALUES (50021, 4048, 'pkg:github/hapijs/call', 'cpe:2.3:a:call_project:call'); -INSERT INTO "short_cpe_purl" ("cpe_id", "purl_id", "purl", "short_cpe") VALUES (50021, 10316, 'pkg:npm/@hapi/call', 'cpe:2.3:a:call_project:call'); -INSERT INTO "short_cpe_purl" ("cpe_id", "purl_id", "purl", "short_cpe") VALUES (24723, 24815, 'pkg:npm/calmquist.static-server', 'cpe:2.3:a:calmquist.static-server_project:calmquist.static-server'); -INSERT INTO "short_cpe_purl" ("cpe_id", "purl_id", "purl", "short_cpe") VALUES (32816, 19906, 'pkg:github/pld-linux/jbigkit', 'cpe:2.3:a:cambridge_enterprise:jbig-kit'); -INSERT INTO "short_cpe_purl" ("cpe_id", "purl_id", "purl", "short_cpe") VALUES (32816, 23260, 'pkg:rpm/fedora/jbigkit', 'cpe:2.3:a:cambridge_enterprise:jbig-kit'); -INSERT INTO "short_cpe_purl" ("cpe_id", "purl_id", "purl", "short_cpe") VALUES (32816, 1646, 'pkg:rpm/opensuse/jbigkit', 'cpe:2.3:a:cambridge_enterprise:jbig-kit'); -INSERT INTO "short_cpe_purl" ("cpe_id", "purl_id", "purl", "short_cpe") VALUES (32816, 10692, 'pkg:rpm/centos/jbigkit', 'cpe:2.3:a:cambridge_enterprise:jbig-kit'); -INSERT INTO "short_cpe_purl" ("cpe_id", "purl_id", "purl", "short_cpe") VALUES (32816, 3023, 'pkg:deb/debian/jbigkit', 'cpe:2.3:a:cambridge_enterprise:jbig-kit'); -INSERT INTO "short_cpe_purl" ("cpe_id", "purl_id", "purl", "short_cpe") VALUES (32816, 5153, 'pkg:deb/ubuntu/jbigkit', 'cpe:2.3:a:cambridge_enterprise:jbig-kit'); -INSERT INTO "short_cpe_purl" ("cpe_id", "purl_id", "purl", "short_cpe") VALUES (32816, 9550, 'pkg:gitlab/redhat/jbigkit', 'cpe:2.3:a:cambridge_enterprise:jbig-kit'); -INSERT INTO "short_cpe_purl" ("cpe_id", "purl_id", "purl", "short_cpe") VALUES (44876, 11524, 'pkg:github/thtas/campaignmonitor', 'cpe:2.3:a:campaign_monitor_project:campaign_monitor'); -INSERT INTO "short_cpe_purl" ("cpe_id", "purl_id", "purl", "short_cpe") VALUES (8270, 25794, 'pkg:github/wp-plugins/candidate-application-form', 'cpe:2.3:a:candidate-application-form_project:candidate-application-form'); -INSERT INTO "short_cpe_purl" ("cpe_id", "purl_id", "purl", "short_cpe") VALUES (8270, 1176, 'pkg:github/wpplugins/candidate-application-form', 'cpe:2.3:a:candidate-application-form_project:candidate-application-form'); -INSERT INTO "short_cpe_purl" ("cpe_id", "purl_id", "purl", "short_cpe") VALUES (23153, 22770, 'pkg:github/candlepin/candlepin', 'cpe:2.3:a:candlepinproject:candlepin'); -INSERT INTO "short_cpe_purl" ("cpe_id", "purl_id", "purl", "short_cpe") VALUES (17559, 24096, 'pkg:github/giuliomoro/checkinstall', 'cpe:2.3:a:canonical:checkinstall'); -INSERT INTO "short_cpe_purl" ("cpe_id", "purl_id", "purl", "short_cpe") VALUES (17559, 2429, 'pkg:github/ruxkor/checkinstall', 'cpe:2.3:a:canonical:checkinstall'); -INSERT INTO "short_cpe_purl" ("cpe_id", "purl_id", "purl", "short_cpe") VALUES (36858, 15022, 'pkg:github/lxc/lxd', 'cpe:2.3:a:canonical:lxd'); -INSERT INTO "short_cpe_purl" ("cpe_id", "purl_id", "purl", "short_cpe") VALUES (36858, 6062, 'pkg:rpm/opensuse/lxd', 'cpe:2.3:a:canonical:lxd'); -INSERT INTO "short_cpe_purl" ("cpe_id", "purl_id", "purl", "short_cpe") VALUES (54486, 11962, 'pkg:github/maas/maas', 'cpe:2.3:a:canonical:metal_as_a_service'); -INSERT INTO "short_cpe_purl" ("cpe_id", "purl_id", "purl", "short_cpe") VALUES (54486, 18047, 'pkg:deb/ubuntu/maas', 'cpe:2.3:a:canonical:metal_as_a_service'); -INSERT INTO "short_cpe_purl" ("cpe_id", "purl_id", "purl", "short_cpe") VALUES (158765, 24539, 'pkg:github/tseliot/screen-resolution-extra', 'cpe:2.3:a:canonical:screen-resolution-extra'); -INSERT INTO "short_cpe_purl" ("cpe_id", "purl_id", "purl", "short_cpe") VALUES (20819, 2595, 'pkg:deb/ubuntu/screen-resolution-extra', 'cpe:2.3:a:canonical:screen-resolution-extra'); -INSERT INTO "short_cpe_purl" ("cpe_id", "purl_id", "purl", "short_cpe") VALUES (48168, 14558, 'pkg:github/selinuxproject/selinux', 'cpe:2.3:a:canonical:selinux'); -INSERT INTO "short_cpe_purl" ("cpe_id", "purl_id", "purl", "short_cpe") VALUES (48168, 23242, 'pkg:deb/ubuntu/selinux', 'cpe:2.3:a:canonical:selinux'); -INSERT INTO "short_cpe_purl" ("cpe_id", "purl_id", "purl", "short_cpe") VALUES (4970, 22410, 'pkg:github/snapcore/snapd', 'cpe:2.3:a:canonical:ubuntu-core-launcher'); -INSERT INTO "short_cpe_purl" ("cpe_id", "purl_id", "purl", "short_cpe") VALUES (4970, 10569, 'pkg:rpm/fedora/snapd', 'cpe:2.3:a:canonical:ubuntu-core-launcher'); -INSERT INTO "short_cpe_purl" ("cpe_id", "purl_id", "purl", "short_cpe") VALUES (4970, 7072, 'pkg:rpm/opensuse/snapd', 'cpe:2.3:a:canonical:ubuntu-core-launcher'); -INSERT INTO "short_cpe_purl" ("cpe_id", "purl_id", "purl", "short_cpe") VALUES (4970, 17949, 'pkg:deb/debian/snapd', 'cpe:2.3:a:canonical:ubuntu-core-launcher'); -INSERT INTO "short_cpe_purl" ("cpe_id", "purl_id", "purl", "short_cpe") VALUES (4970, 11242, 'pkg:deb/ubuntu/snapd', 'cpe:2.3:a:canonical:ubuntu-core-launcher'); -INSERT INTO "short_cpe_purl" ("cpe_id", "purl_id", "purl", "short_cpe") VALUES (48783, 26613, 'pkg:github/ubports/ubuntu-download-manager', 'cpe:2.3:a:canonical:ubuntu_download_manager'); -INSERT INTO "short_cpe_purl" ("cpe_id", "purl_id", "purl", "short_cpe") VALUES (11798, 20614, 'pkg:deb/ubuntu/update-manager', 'cpe:2.3:a:canonical:update-manager'); -INSERT INTO "short_cpe_purl" ("cpe_id", "purl_id", "purl", "short_cpe") VALUES (6591, 9741, 'pkg:github/cantemo/portal-docker', 'cpe:2.3:a:cantemo:portal'); -INSERT INTO "short_cpe_purl" ("cpe_id", "purl_id", "purl", "short_cpe") VALUES (8296, 6121, 'pkg:github/capstone-engine/capstone', 'cpe:2.3:a:capstone-engine:capstone'); -INSERT INTO "short_cpe_purl" ("cpe_id", "purl_id", "purl", "short_cpe") VALUES (8296, 1739, 'pkg:rpm/fedora/capstone', 'cpe:2.3:a:capstone-engine:capstone'); -INSERT INTO "short_cpe_purl" ("cpe_id", "purl_id", "purl", "short_cpe") VALUES (8296, 17342, 'pkg:rpm/opensuse/capstone', 'cpe:2.3:a:capstone-engine:capstone'); -INSERT INTO "short_cpe_purl" ("cpe_id", "purl_id", "purl", "short_cpe") VALUES (8296, 14642, 'pkg:deb/debian/capstone', 'cpe:2.3:a:capstone-engine:capstone'); \ No newline at end of file +-- Test data only. The schema comes from testSchemaDDL in pkg/models/test_schema.go; do not add DDL here. +INSERT INTO short_cpe_purl (cpe_id, purl_id, purl) VALUES (4772, 19304, 'pkg:github/c2fo/comb'); +INSERT INTO short_cpe_purl (cpe_id, purl_id, purl) VALUES (4772, 6781, 'pkg:npm/comb'); +INSERT INTO short_cpe_purl (cpe_id, purl_id, purl) VALUES (40676, 12377, 'pkg:github/cunaedy/cart-engine'); +INSERT INTO short_cpe_purl (cpe_id, purl_id, purl) VALUES (6930, 22887, 'pkg:github/ashaffer/cached-path-relative'); +INSERT INTO short_cpe_purl (cpe_id, purl_id, purl) VALUES (6930, 22665, 'pkg:deb/debian/node-cached-path-relative'); +INSERT INTO short_cpe_purl (cpe_id, purl_id, purl) VALUES (6930, 18591, 'pkg:deb/ubuntu/node-cached-path-relative'); +INSERT INTO short_cpe_purl (cpe_id, purl_id, purl) VALUES (6930, 10060, 'pkg:maven/org.webjars.npm/cached-path-relative'); +INSERT INTO short_cpe_purl (cpe_id, purl_id, purl) VALUES (6930, 22890, 'pkg:npm/cached-path-relative'); +INSERT INTO short_cpe_purl (cpe_id, purl_id, purl) VALUES (54546, 25014, 'pkg:github/jaemk/cached'); +INSERT INTO short_cpe_purl (cpe_id, purl_id, purl) VALUES (9517, 24116, 'pkg:github/swatinem/rust-cache'); +INSERT INTO short_cpe_purl (cpe_id, purl_id, purl) VALUES (40143, 8505, 'pkg:github/calderawp/caldera-forms'); +INSERT INTO short_cpe_purl (cpe_id, purl_id, purl) VALUES (40143, 12025, 'pkg:github/wp-plugins/caldera-forms'); +INSERT INTO short_cpe_purl (cpe_id, purl_id, purl) VALUES (40143, 17269, 'pkg:github/wpplugins/caldera-forms'); +INSERT INTO short_cpe_purl (cpe_id, purl_id, purl) VALUES (31044, 17507, 'pkg:github/wp-plugins/konnichiwa'); +INSERT INTO short_cpe_purl (cpe_id, purl_id, purl) VALUES (50021, 4048, 'pkg:github/hapijs/call'); +INSERT INTO short_cpe_purl (cpe_id, purl_id, purl) VALUES (50021, 10316, 'pkg:npm/@hapi/call'); +INSERT INTO short_cpe_purl (cpe_id, purl_id, purl) VALUES (24723, 24815, 'pkg:npm/calmquist.static-server'); +INSERT INTO short_cpe_purl (cpe_id, purl_id, purl) VALUES (32816, 19906, 'pkg:github/pld-linux/jbigkit'); +INSERT INTO short_cpe_purl (cpe_id, purl_id, purl) VALUES (32816, 23260, 'pkg:rpm/fedora/jbigkit'); +INSERT INTO short_cpe_purl (cpe_id, purl_id, purl) VALUES (32816, 1646, 'pkg:rpm/opensuse/jbigkit'); +INSERT INTO short_cpe_purl (cpe_id, purl_id, purl) VALUES (32816, 10692, 'pkg:rpm/centos/jbigkit'); +INSERT INTO short_cpe_purl (cpe_id, purl_id, purl) VALUES (32816, 3023, 'pkg:deb/debian/jbigkit'); +INSERT INTO short_cpe_purl (cpe_id, purl_id, purl) VALUES (32816, 5153, 'pkg:deb/ubuntu/jbigkit'); +INSERT INTO short_cpe_purl (cpe_id, purl_id, purl) VALUES (32816, 9550, 'pkg:gitlab/redhat/jbigkit'); +INSERT INTO short_cpe_purl (cpe_id, purl_id, purl) VALUES (44876, 11524, 'pkg:github/thtas/campaignmonitor'); +INSERT INTO short_cpe_purl (cpe_id, purl_id, purl) VALUES (8270, 25794, 'pkg:github/wp-plugins/candidate-application-form'); +INSERT INTO short_cpe_purl (cpe_id, purl_id, purl) VALUES (8270, 1176, 'pkg:github/wpplugins/candidate-application-form'); +INSERT INTO short_cpe_purl (cpe_id, purl_id, purl) VALUES (23153, 22770, 'pkg:github/candlepin/candlepin'); +INSERT INTO short_cpe_purl (cpe_id, purl_id, purl) VALUES (17559, 24096, 'pkg:github/giuliomoro/checkinstall'); +INSERT INTO short_cpe_purl (cpe_id, purl_id, purl) VALUES (17559, 2429, 'pkg:github/ruxkor/checkinstall'); +INSERT INTO short_cpe_purl (cpe_id, purl_id, purl) VALUES (36858, 15022, 'pkg:github/lxc/lxd'); +INSERT INTO short_cpe_purl (cpe_id, purl_id, purl) VALUES (36858, 6062, 'pkg:rpm/opensuse/lxd'); +INSERT INTO short_cpe_purl (cpe_id, purl_id, purl) VALUES (54486, 11962, 'pkg:github/maas/maas'); +INSERT INTO short_cpe_purl (cpe_id, purl_id, purl) VALUES (54486, 18047, 'pkg:deb/ubuntu/maas'); +INSERT INTO short_cpe_purl (cpe_id, purl_id, purl) VALUES (158765, 24539, 'pkg:github/tseliot/screen-resolution-extra'); +INSERT INTO short_cpe_purl (cpe_id, purl_id, purl) VALUES (20819, 2595, 'pkg:deb/ubuntu/screen-resolution-extra'); +INSERT INTO short_cpe_purl (cpe_id, purl_id, purl) VALUES (48168, 14558, 'pkg:github/selinuxproject/selinux'); +INSERT INTO short_cpe_purl (cpe_id, purl_id, purl) VALUES (48168, 23242, 'pkg:deb/ubuntu/selinux'); +INSERT INTO short_cpe_purl (cpe_id, purl_id, purl) VALUES (4970, 22410, 'pkg:github/snapcore/snapd'); +INSERT INTO short_cpe_purl (cpe_id, purl_id, purl) VALUES (4970, 10569, 'pkg:rpm/fedora/snapd'); +INSERT INTO short_cpe_purl (cpe_id, purl_id, purl) VALUES (4970, 7072, 'pkg:rpm/opensuse/snapd'); +INSERT INTO short_cpe_purl (cpe_id, purl_id, purl) VALUES (4970, 17949, 'pkg:deb/debian/snapd'); +INSERT INTO short_cpe_purl (cpe_id, purl_id, purl) VALUES (4970, 11242, 'pkg:deb/ubuntu/snapd'); +INSERT INTO short_cpe_purl (cpe_id, purl_id, purl) VALUES (48783, 26613, 'pkg:github/ubports/ubuntu-download-manager'); +INSERT INTO short_cpe_purl (cpe_id, purl_id, purl) VALUES (11798, 20614, 'pkg:deb/ubuntu/update-manager'); +INSERT INTO short_cpe_purl (cpe_id, purl_id, purl) VALUES (6591, 9741, 'pkg:github/cantemo/portal-docker'); +INSERT INTO short_cpe_purl (cpe_id, purl_id, purl) VALUES (8296, 6121, 'pkg:github/capstone-engine/capstone'); +INSERT INTO short_cpe_purl (cpe_id, purl_id, purl) VALUES (8296, 1739, 'pkg:rpm/fedora/capstone'); +INSERT INTO short_cpe_purl (cpe_id, purl_id, purl) VALUES (8296, 17342, 'pkg:rpm/opensuse/capstone'); +INSERT INTO short_cpe_purl (cpe_id, purl_id, purl) VALUES (8296, 14642, 'pkg:deb/debian/capstone'); diff --git a/pkg/models/tests/versions.sql b/pkg/models/tests/versions.sql index 74576d6..5e6fcce 100644 --- a/pkg/models/tests/versions.sql +++ b/pkg/models/tests/versions.sql @@ -1,322 +1,315 @@ -DROP TABLE IF EXISTS versions; -CREATE TABLE versions -( - id INTEGER PRIMARY KEY, - version_name text not null unique, - semver text default '' -); - -INSERT INTO "versions" ("id", "version_name", "semver") VALUES (1365, '3.4.2', '3.4.2'); -INSERT INTO "versions" ("id", "version_name", "semver") VALUES (1394, '3.0.3', '3.0.3'); -INSERT INTO "versions" ("id", "version_name", "semver") VALUES (1794, '5.0.1', '5.0.1'); -INSERT INTO "versions" ("id", "version_name", "semver") VALUES (1795, '3.0', '3.0.0'); -INSERT INTO "versions" ("id", "version_name", "semver") VALUES (1993, '5.0.3', '5.0.3'); -INSERT INTO "versions" ("id", "version_name", "semver") VALUES (1998, '4.0.1', '4.0.1'); -INSERT INTO "versions" ("id", "version_name", "semver") VALUES (2025, '3.2.0', '3.2.0'); -INSERT INTO "versions" ("id", "version_name", "semver") VALUES (2683, '2.0.4', '2.0.4'); -INSERT INTO "versions" ("id", "version_name", "semver") VALUES (8481, '1.6.4', '1.6.4'); -INSERT INTO "versions" ("id", "version_name", "semver") VALUES (8720, '2.3.8', '2.3.8'); -INSERT INTO "versions" ("id", "version_name", "semver") VALUES (8723, '3.1.4', '3.1.4'); -INSERT INTO "versions" ("id", "version_name", "semver") VALUES (8873, '3.4.7', '3.4.7'); -INSERT INTO "versions" ("id", "version_name", "semver") VALUES (8878, '2.3.6', '2.3.6'); -INSERT INTO "versions" ("id", "version_name", "semver") VALUES (8889, '3.2.6', '3.2.6'); -INSERT INTO "versions" ("id", "version_name", "semver") VALUES (8917, '2.4.7', '2.4.7'); -INSERT INTO "versions" ("id", "version_name", "semver") VALUES (8918, '2.3.5', '2.3.5'); -INSERT INTO "versions" ("id", "version_name", "semver") VALUES (9111, '3.3.6', '3.3.6'); -INSERT INTO "versions" ("id", "version_name", "semver") VALUES (9113, '3.1.3', '3.1.3'); -INSERT INTO "versions" ("id", "version_name", "semver") VALUES (9123, '2.3.11', '2.3.11'); -INSERT INTO "versions" ("id", "version_name", "semver") VALUES (9154, '3.1.5', '3.1.5'); -INSERT INTO "versions" ("id", "version_name", "semver") VALUES (10371, '1.5.8', '1.5.8'); -INSERT INTO "versions" ("id", "version_name", "semver") VALUES (11418, '1.3.3', '1.3.3'); -INSERT INTO "versions" ("id", "version_name", "semver") VALUES (12882, '4.0.2', '4.0.2'); -INSERT INTO "versions" ("id", "version_name", "semver") VALUES (13146, '1.3.5', '1.3.5'); -INSERT INTO "versions" ("id", "version_name", "semver") VALUES (13150, '3.1.2', '3.1.2'); -INSERT INTO "versions" ("id", "version_name", "semver") VALUES (13152, '3.2.1', '3.2.1'); -INSERT INTO "versions" ("id", "version_name", "semver") VALUES (13279, '1.4.4', '1.4.4'); -INSERT INTO "versions" ("id", "version_name", "semver") VALUES (13284, '1.5.2', '1.5.2'); -INSERT INTO "versions" ("id", "version_name", "semver") VALUES (13517, '1.4.6', '1.4.6'); -INSERT INTO "versions" ("id", "version_name", "semver") VALUES (13571, '2.1.4', '2.1.4'); -INSERT INTO "versions" ("id", "version_name", "semver") VALUES (13904, '3.0.9', '3.0.9'); -INSERT INTO "versions" ("id", "version_name", "semver") VALUES (13940, '3.0.8', '3.0.8'); -INSERT INTO "versions" ("id", "version_name", "semver") VALUES (13943, '3.0.10', '3.0.10'); -INSERT INTO "versions" ("id", "version_name", "semver") VALUES (13949, '3.0.11', '3.0.11'); -INSERT INTO "versions" ("id", "version_name", "semver") VALUES (13961, '3.0.12', '3.0.12'); -INSERT INTO "versions" ("id", "version_name", "semver") VALUES (13966, '3.0.13', '3.0.13'); -INSERT INTO "versions" ("id", "version_name", "semver") VALUES (13967, '3.0.7', '3.0.7'); -INSERT INTO "versions" ("id", "version_name", "semver") VALUES (14302, '0.0.9', '0.0.9'); -INSERT INTO "versions" ("id", "version_name", "semver") VALUES (14400, '3.2.5', '3.2.5'); -INSERT INTO "versions" ("id", "version_name", "semver") VALUES (14489, '3.4.6', '3.4.6'); -INSERT INTO "versions" ("id", "version_name", "semver") VALUES (14540, '1.1.5', '1.1.5'); -INSERT INTO "versions" ("id", "version_name", "semver") VALUES (14619, '3.2.2', '3.2.2'); -INSERT INTO "versions" ("id", "version_name", "semver") VALUES (14621, '2.2.4', '2.2.4'); -INSERT INTO "versions" ("id", "version_name", "semver") VALUES (14744, '1.1.6', '1.1.6'); -INSERT INTO "versions" ("id", "version_name", "semver") VALUES (14796, '0.0.5', '0.0.5'); -INSERT INTO "versions" ("id", "version_name", "semver") VALUES (14797, '0.0.7', '0.0.7'); -INSERT INTO "versions" ("id", "version_name", "semver") VALUES (14851, '0.2.5', '0.2.5'); -INSERT INTO "versions" ("id", "version_name", "semver") VALUES (14867, '0.1.6', '0.1.6'); -INSERT INTO "versions" ("id", "version_name", "semver") VALUES (14943, '0.13.0', '0.13.0'); -INSERT INTO "versions" ("id", "version_name", "semver") VALUES (14944, '0.9.0', '0.9.0'); -INSERT INTO "versions" ("id", "version_name", "semver") VALUES (14945, '0.4.3', '0.4.3'); -INSERT INTO "versions" ("id", "version_name", "semver") VALUES (14946, '1.5.4', '1.5.4'); -INSERT INTO "versions" ("id", "version_name", "semver") VALUES (14948, '0.7.2', '0.7.2'); -INSERT INTO "versions" ("id", "version_name", "semver") VALUES (15000, '0.1.4', '0.1.4'); -INSERT INTO "versions" ("id", "version_name", "semver") VALUES (15003, '3.0.5', '3.0.5'); -INSERT INTO "versions" ("id", "version_name", "semver") VALUES (15028, '3.3.4', '3.3.4'); -INSERT INTO "versions" ("id", "version_name", "semver") VALUES (15029, '2.4.3', '2.4.3'); -INSERT INTO "versions" ("id", "version_name", "semver") VALUES (15050, '0.15.0', '0.15.0'); -INSERT INTO "versions" ("id", "version_name", "semver") VALUES (15081, '0.8.0', '0.8.0'); -INSERT INTO "versions" ("id", "version_name", "semver") VALUES (15145, '2.4.5', '2.4.5'); -INSERT INTO "versions" ("id", "version_name", "semver") VALUES (15188, '0.1.7', '0.1.7'); -INSERT INTO "versions" ("id", "version_name", "semver") VALUES (15189, '2.1.5', '2.1.5'); -INSERT INTO "versions" ("id", "version_name", "semver") VALUES (15193, '5.0.2', '5.0.2'); -INSERT INTO "versions" ("id", "version_name", "semver") VALUES (15211, '0.1.8', '0.1.8'); -INSERT INTO "versions" ("id", "version_name", "semver") VALUES (15231, '1.5.1', '1.5.1'); -INSERT INTO "versions" ("id", "version_name", "semver") VALUES (15232, '1.6.1', '1.6.1'); -INSERT INTO "versions" ("id", "version_name", "semver") VALUES (15235, '0.2.4', '0.2.4'); -INSERT INTO "versions" ("id", "version_name", "semver") VALUES (15264, '3.3.0', '3.3.0'); -INSERT INTO "versions" ("id", "version_name", "semver") VALUES (15302, '3.3.5', '3.3.5'); -INSERT INTO "versions" ("id", "version_name", "semver") VALUES (15337, '2.4.1', '2.4.1'); -INSERT INTO "versions" ("id", "version_name", "semver") VALUES (17890, '2.3.7', '2.3.7'); -INSERT INTO "versions" ("id", "version_name", "semver") VALUES (22072, '1.1.2', '1.1.2'); -INSERT INTO "versions" ("id", "version_name", "semver") VALUES (215573, '1.9.0', '1.9.0'); -INSERT INTO "versions" ("id", "version_name", "semver") VALUES (233375, '0.1.9', '0.1.9'); -INSERT INTO "versions" ("id", "version_name", "semver") VALUES (237532, '3.3.1', '3.3.1'); -INSERT INTO "versions" ("id", "version_name", "semver") VALUES (241746, '0.12.0', '0.12.0'); -INSERT INTO "versions" ("id", "version_name", "semver") VALUES (243167, '3.4.0', '3.4.0'); -INSERT INTO "versions" ("id", "version_name", "semver") VALUES (244660, '2.3.2', '2.3.2'); -INSERT INTO "versions" ("id", "version_name", "semver") VALUES (244764, '0.8', '0.8.0'); -INSERT INTO "versions" ("id", "version_name", "semver") VALUES (247658, '0.4.2', '0.4.2'); -INSERT INTO "versions" ("id", "version_name", "semver") VALUES (247848, '1.2.3', '1.2.3'); -INSERT INTO "versions" ("id", "version_name", "semver") VALUES (248486, '0.6.0', '0.6.0'); -INSERT INTO "versions" ("id", "version_name", "semver") VALUES (249058, '1.1.3', '1.1.3'); -INSERT INTO "versions" ("id", "version_name", "semver") VALUES (249253, '3.2.3', '3.2.3'); -INSERT INTO "versions" ("id", "version_name", "semver") VALUES (249755, '0.4.0', '0.4.0'); -INSERT INTO "versions" ("id", "version_name", "semver") VALUES (249772, '0.10.0', '0.10.0'); -INSERT INTO "versions" ("id", "version_name", "semver") VALUES (249774, '0.8.1', '0.8.1'); -INSERT INTO "versions" ("id", "version_name", "semver") VALUES (250722, '2.1.6', '2.1.6'); -INSERT INTO "versions" ("id", "version_name", "semver") VALUES (250884, '0.1.3', '0.1.3'); -INSERT INTO "versions" ("id", "version_name", "semver") VALUES (251176, '2.2.3', '2.2.3'); -INSERT INTO "versions" ("id", "version_name", "semver") VALUES (251178, '2.4.2', '2.4.2'); -INSERT INTO "versions" ("id", "version_name", "semver") VALUES (251179, '2.2.0', '2.2.0'); -INSERT INTO "versions" ("id", "version_name", "semver") VALUES (251181, '2.4.0', '2.4.0'); -INSERT INTO "versions" ("id", "version_name", "semver") VALUES (251751, '1.0.8', '1.0.8'); -INSERT INTO "versions" ("id", "version_name", "semver") VALUES (252059, '5.0.0', '5.0.0'); -INSERT INTO "versions" ("id", "version_name", "semver") VALUES (252066, '3.0.4', '3.0.4'); -INSERT INTO "versions" ("id", "version_name", "semver") VALUES (252221, '2.3.4', '2.3.4'); -INSERT INTO "versions" ("id", "version_name", "semver") VALUES (252261, '0.3.1', '0.3.1'); -INSERT INTO "versions" ("id", "version_name", "semver") VALUES (252413, '0.6', '0.6.0'); -INSERT INTO "versions" ("id", "version_name", "semver") VALUES (252454, '0.5.0', '0.5.0'); -INSERT INTO "versions" ("id", "version_name", "semver") VALUES (252546, '0.1.5', '0.1.5'); -INSERT INTO "versions" ("id", "version_name", "semver") VALUES (252547, '0.0.4', '0.0.4'); -INSERT INTO "versions" ("id", "version_name", "semver") VALUES (252611, '1.3.2', '1.3.2'); -INSERT INTO "versions" ("id", "version_name", "semver") VALUES (252612, '4.0.0', '4.0.0'); -INSERT INTO "versions" ("id", "version_name", "semver") VALUES (252638, '0.3.4', '0.3.4'); -INSERT INTO "versions" ("id", "version_name", "semver") VALUES (252639, '0.11.0', '0.11.0'); -INSERT INTO "versions" ("id", "version_name", "semver") VALUES (252640, '2.1.3', '2.1.3'); -INSERT INTO "versions" ("id", "version_name", "semver") VALUES (252657, '1.1.7', '1.1.7'); -INSERT INTO "versions" ("id", "version_name", "semver") VALUES (252703, '2.2.2', '2.2.2'); -INSERT INTO "versions" ("id", "version_name", "semver") VALUES (252814, '0.3.0', '0.3.0'); -INSERT INTO "versions" ("id", "version_name", "semver") VALUES (252815, '2.3.3', '2.3.3'); -INSERT INTO "versions" ("id", "version_name", "semver") VALUES (252983, '1.1.8', '1.1.8'); -INSERT INTO "versions" ("id", "version_name", "semver") VALUES (253031, '3.1.1', '3.1.1'); -INSERT INTO "versions" ("id", "version_name", "semver") VALUES (253139, '0.2.3', '0.2.3'); -INSERT INTO "versions" ("id", "version_name", "semver") VALUES (253846, '1.0.7', '1.0.7'); -INSERT INTO "versions" ("id", "version_name", "semver") VALUES (254033, '1.9.4', '1.9.4'); -INSERT INTO "versions" ("id", "version_name", "semver") VALUES (254832, '2.2.5', '2.2.5'); -INSERT INTO "versions" ("id", "version_name", "semver") VALUES (255921, '0.3.2', '0.3.2'); -INSERT INTO "versions" ("id", "version_name", "semver") VALUES (256416, '0.6.1', '0.6.1'); -INSERT INTO "versions" ("id", "version_name", "semver") VALUES (256715, '1.4.3', '1.4.3'); -INSERT INTO "versions" ("id", "version_name", "semver") VALUES (257434, '2.0.7', '2.0.7'); -INSERT INTO "versions" ("id", "version_name", "semver") VALUES (257513, '2.3.0', '2.3.0'); -INSERT INTO "versions" ("id", "version_name", "semver") VALUES (257682, '1.4.2', '1.4.2'); -INSERT INTO "versions" ("id", "version_name", "semver") VALUES (258303, '1.2.2', '1.2.2'); -INSERT INTO "versions" ("id", "version_name", "semver") VALUES (260652, '1.4.0', '1.4.0'); -INSERT INTO "versions" ("id", "version_name", "semver") VALUES (261941, '1.6.2', '1.6.2'); -INSERT INTO "versions" ("id", "version_name", "semver") VALUES (262138, '2.0.5', '2.0.5'); -INSERT INTO "versions" ("id", "version_name", "semver") VALUES (262155, '2.0.2', '2.0.2'); -INSERT INTO "versions" ("id", "version_name", "semver") VALUES (262603, '0.4.1', '0.4.1'); -INSERT INTO "versions" ("id", "version_name", "semver") VALUES (262607, '3.1.0', '3.1.0'); -INSERT INTO "versions" ("id", "version_name", "semver") VALUES (263095, '3.0.1', '3.0.1'); -INSERT INTO "versions" ("id", "version_name", "semver") VALUES (263168, '1.0.6', '1.0.6'); -INSERT INTO "versions" ("id", "version_name", "semver") VALUES (263169, '0.1.2', '0.1.2'); -INSERT INTO "versions" ("id", "version_name", "semver") VALUES (263171, '1.3.1', '1.3.1'); -INSERT INTO "versions" ("id", "version_name", "semver") VALUES (263265, '1.1', '1.1.0'); -INSERT INTO "versions" ("id", "version_name", "semver") VALUES (263266, '2.1.1', '2.1.1'); -INSERT INTO "versions" ("id", "version_name", "semver") VALUES (263333, '1.0.9', '1.0.9'); -INSERT INTO "versions" ("id", "version_name", "semver") VALUES (263437, '1.6.0', '1.6.0'); -INSERT INTO "versions" ("id", "version_name", "semver") VALUES (263438, '1.2.0', '1.2.0'); -INSERT INTO "versions" ("id", "version_name", "semver") VALUES (263449, '0.0.6', '0.0.6'); -INSERT INTO "versions" ("id", "version_name", "semver") VALUES (263539, '2.1.2', '2.1.2'); -INSERT INTO "versions" ("id", "version_name", "semver") VALUES (263698, '0.2.2', '0.2.2'); -INSERT INTO "versions" ("id", "version_name", "semver") VALUES (263699, '2.0.3', '2.0.3'); -INSERT INTO "versions" ("id", "version_name", "semver") VALUES (264098, '1.5.0', '1.5.0'); -INSERT INTO "versions" ("id", "version_name", "semver") VALUES (264113, '1.3', '1.3.0'); -INSERT INTO "versions" ("id", "version_name", "semver") VALUES (264114, '1.0.5', '1.0.5'); -INSERT INTO "versions" ("id", "version_name", "semver") VALUES (264115, '1.4.1', '1.4.1'); -INSERT INTO "versions" ("id", "version_name", "semver") VALUES (264231, '0.13.1', '0.13.1'); -INSERT INTO "versions" ("id", "version_name", "semver") VALUES (264249, '0.7.0', '0.7.0'); -INSERT INTO "versions" ("id", "version_name", "semver") VALUES (264251, '2.1.0', '2.1.0'); -INSERT INTO "versions" ("id", "version_name", "semver") VALUES (264337, '1.1.1', '1.1.1'); -INSERT INTO "versions" ("id", "version_name", "semver") VALUES (264338, '1.3.0', '1.3.0'); -INSERT INTO "versions" ("id", "version_name", "semver") VALUES (264339, '1.1.0', '1.1.0'); -INSERT INTO "versions" ("id", "version_name", "semver") VALUES (264557, '0.2.1', '0.2.1'); -INSERT INTO "versions" ("id", "version_name", "semver") VALUES (264642, '1.2', '1.2.0'); -INSERT INTO "versions" ("id", "version_name", "semver") VALUES (264643, '0.0.3', '0.0.3'); -INSERT INTO "versions" ("id", "version_name", "semver") VALUES (264714, '0.0.8', '0.0.8'); -INSERT INTO "versions" ("id", "version_name", "semver") VALUES (264721, '0.0.2', '0.0.2'); -INSERT INTO "versions" ("id", "version_name", "semver") VALUES (264897, '1.2.1', '1.2.1'); -INSERT INTO "versions" ("id", "version_name", "semver") VALUES (264996, '2.3.1', '2.3.1'); -INSERT INTO "versions" ("id", "version_name", "semver") VALUES (265074, '3.0.0', '3.0.0'); -INSERT INTO "versions" ("id", "version_name", "semver") VALUES (265075, '2.0.1', '2.0.1'); -INSERT INTO "versions" ("id", "version_name", "semver") VALUES (265076, '2.0.0', '2.0.0'); -INSERT INTO "versions" ("id", "version_name", "semver") VALUES (265149, '1.0.3', '1.0.3'); -INSERT INTO "versions" ("id", "version_name", "semver") VALUES (265150, '1.0.2', '1.0.2'); -INSERT INTO "versions" ("id", "version_name", "semver") VALUES (265151, '0.1.1', '0.1.1'); -INSERT INTO "versions" ("id", "version_name", "semver") VALUES (265152, '1.0.4', '1.0.4'); -INSERT INTO "versions" ("id", "version_name", "semver") VALUES (265153, '1.0.0', '1.0.0'); -INSERT INTO "versions" ("id", "version_name", "semver") VALUES (265154, '1.0.1', '1.0.1'); -INSERT INTO "versions" ("id", "version_name", "semver") VALUES (265155, '0.2.0', '0.2.0'); -INSERT INTO "versions" ("id", "version_name", "semver") VALUES (265156, '0.1.0', '0.1.0'); -INSERT INTO "versions" ("id", "version_name", "semver") VALUES (265157, '1.0', '1.0.0'); -INSERT INTO "versions" ("id", "version_name", "semver") VALUES (1999301, '1.5.0.5', '1.5.0+5'); -INSERT INTO "versions" ("id", "version_name", "semver") VALUES (3720103, '0.16.0', '0.16.0'); -INSERT INTO "versions" ("id", "version_name", "semver") VALUES (5127876, '0.22.0', '0.22.0'); -INSERT INTO "versions" ("id", "version_name", "semver") VALUES (5128616, '0.21.0', '0.21.0'); -INSERT INTO "versions" ("id", "version_name", "semver") VALUES (5482104, '0.2.11', '0.2.11'); -INSERT INTO "versions" ("id", "version_name", "semver") VALUES (5600056, '1.3.4.1', '1.3.4+1'); -INSERT INTO "versions" ("id", "version_name", "semver") VALUES (5617453, '1.6.6', '1.6.6'); -INSERT INTO "versions" ("id", "version_name", "semver") VALUES (5670099, '0.8.3', '0.8.3'); -INSERT INTO "versions" ("id", "version_name", "semver") VALUES (5811416, '3.4.5', '3.4.5'); -INSERT INTO "versions" ("id", "version_name", "semver") VALUES (5835723, '0.7', '0.7.0'); -INSERT INTO "versions" ("id", "version_name", "semver") VALUES (6138488, '0.3.6', '0.3.6'); -INSERT INTO "versions" ("id", "version_name", "semver") VALUES (6140300, '0.2.6', '0.2.6'); -INSERT INTO "versions" ("id", "version_name", "semver") VALUES (6155011, '0.3.5', '0.3.5'); -INSERT INTO "versions" ("id", "version_name", "semver") VALUES (6277397, '1.3.4.2', '1.3.4+2'); -INSERT INTO "versions" ("id", "version_name", "semver") VALUES (6357014, '3.0.6.1', '3.0.6+1'); -INSERT INTO "versions" ("id", "version_name", "semver") VALUES (6544148, '3.3.7', '3.3.7'); -INSERT INTO "versions" ("id", "version_name", "semver") VALUES (6703009, '1.3.1.2', '1.3.1+2'); -INSERT INTO "versions" ("id", "version_name", "semver") VALUES (6895007, '0.17.0', '0.17.0'); -INSERT INTO "versions" ("id", "version_name", "semver") VALUES (7083951, '1.4.8', '1.4.8'); -INSERT INTO "versions" ("id", "version_name", "semver") VALUES (7235805, '1.5.0.6', '1.5.0+6'); -INSERT INTO "versions" ("id", "version_name", "semver") VALUES (7256833, '0.4.4', '0.4.4'); -INSERT INTO "versions" ("id", "version_name", "semver") VALUES (7405670, '0.14.0', '0.14.0'); -INSERT INTO "versions" ("id", "version_name", "semver") VALUES (7818861, '0.20.0', '0.20.0'); -INSERT INTO "versions" ("id", "version_name", "semver") VALUES (7892814, '1.4.5', '1.4.5'); -INSERT INTO "versions" ("id", "version_name", "semver") VALUES (8474638, '1.1.9.6', '1.1.9+6'); -INSERT INTO "versions" ("id", "version_name", "semver") VALUES (8660478, '1.5.5', '1.5.5'); -INSERT INTO "versions" ("id", "version_name", "semver") VALUES (8795532, '1.4.7', '1.4.7'); -INSERT INTO "versions" ("id", "version_name", "semver") VALUES (8912914, '1.1.9.9', '1.1.9+9'); -INSERT INTO "versions" ("id", "version_name", "semver") VALUES (8952136, '0.14.1', '0.14.1'); -INSERT INTO "versions" ("id", "version_name", "semver") VALUES (9540297, '3.4.8', '3.4.8'); -INSERT INTO "versions" ("id", "version_name", "semver") VALUES (9909761, '1.4.5.1', '1.4.5+1'); -INSERT INTO "versions" ("id", "version_name", "semver") VALUES (10206536, '1.1.9.4', '1.1.9+4'); -INSERT INTO "versions" ("id", "version_name", "semver") VALUES (10333707, '1.1.9.8', '1.1.9+8'); -INSERT INTO "versions" ("id", "version_name", "semver") VALUES (10429338, '1.5.0.10', '1.5.0+10'); -INSERT INTO "versions" ("id", "version_name", "semver") VALUES (10499956, '1.3.5.3', '1.3.5+3'); -INSERT INTO "versions" ("id", "version_name", "semver") VALUES (10522622, '1.5.0.4', '1.5.0+4'); -INSERT INTO "versions" ("id", "version_name", "semver") VALUES (10817733, '1.5.3', '1.5.3'); -INSERT INTO "versions" ("id", "version_name", "semver") VALUES (10907584, '0.6.3', '0.6.3'); -INSERT INTO "versions" ("id", "version_name", "semver") VALUES (11098064, '0.18.0', '0.18.0'); -INSERT INTO "versions" ("id", "version_name", "semver") VALUES (11283815, '1.5.0.7', '1.5.0+7'); -INSERT INTO "versions" ("id", "version_name", "semver") VALUES (11379260, '3.4.1', '3.4.1'); -INSERT INTO "versions" ("id", "version_name", "semver") VALUES (11466378, '0.2.10', '0.2.10'); -INSERT INTO "versions" ("id", "version_name", "semver") VALUES (11562873, '1.5.0.9', '1.5.0+9'); -INSERT INTO "versions" ("id", "version_name", "semver") VALUES (11647042, '2.3.12', '2.3.12'); -INSERT INTO "versions" ("id", "version_name", "semver") VALUES (12136986, '0.23.0', '0.23.0'); -INSERT INTO "versions" ("id", "version_name", "semver") VALUES (12192601, '3.2.11', '3.2.11'); -INSERT INTO "versions" ("id", "version_name", "semver") VALUES (12448282, '3.4.4', '3.4.4'); -INSERT INTO "versions" ("id", "version_name", "semver") VALUES (12690234, '2.1', '2.1.0'); -INSERT INTO "versions" ("id", "version_name", "semver") VALUES (12797296, '0.4.5', '0.4.5'); -INSERT INTO "versions" ("id", "version_name", "semver") VALUES (13093993, '1.1.9.5', '1.1.9+5'); -INSERT INTO "versions" ("id", "version_name", "semver") VALUES (13117909, '1.1.9.10', '1.1.9+10'); -INSERT INTO "versions" ("id", "version_name", "semver") VALUES (13616284, '1.5', '1.5.0'); -INSERT INTO "versions" ("id", "version_name", "semver") VALUES (13695671, '1.5.0.1-3', '1.5.0+1.3'); -INSERT INTO "versions" ("id", "version_name", "semver") VALUES (13819035, '1.5.0.8', '1.5.0+8'); -INSERT INTO "versions" ("id", "version_name", "semver") VALUES (13877853, '1.1.9.3', '1.1.9+3'); -INSERT INTO "versions" ("id", "version_name", "semver") VALUES (13917822, '1.5.6.1', '1.5.6+1'); -INSERT INTO "versions" ("id", "version_name", "semver") VALUES (13934859, '1.1.9.2', '1.1.9+2'); -INSERT INTO "versions" ("id", "version_name", "semver") VALUES (14051023, '1.9.2', '1.9.2'); -INSERT INTO "versions" ("id", "version_name", "semver") VALUES (14250461, '3.2.13', '3.2.13'); -INSERT INTO "versions" ("id", "version_name", "semver") VALUES (14251660, '1.5.6.2', '1.5.6+2'); -INSERT INTO "versions" ("id", "version_name", "semver") VALUES (14268199, '3.3.8', '3.3.8'); -INSERT INTO "versions" ("id", "version_name", "semver") VALUES (16550345, '2.4.10', '2.4.10'); -INSERT INTO "versions" ("id", "version_name", "semver") VALUES (17151752, '1.3.5.2', '1.3.5+2'); -INSERT INTO "versions" ("id", "version_name", "semver") VALUES (19258660, '1.0.91', '1.0.91'); -INSERT INTO "versions" ("id", "version_name", "semver") VALUES (19269674, '0.19.0', '0.19.0'); -INSERT INTO "versions" ("id", "version_name", "semver") VALUES (19291862, '1.5.6', '1.5.6'); -INSERT INTO "versions" ("id", "version_name", "semver") VALUES (19295009, '0.17.2', '0.17.2'); -INSERT INTO "versions" ("id", "version_name", "semver") VALUES (19295050, '0.4.27', '0.4.27'); -INSERT INTO "versions" ("id", "version_name", "semver") VALUES (19299214, '1.9.5', '1.9.5'); -INSERT INTO "versions" ("id", "version_name", "semver") VALUES (19322787, '1.9.1', '1.9.1'); -INSERT INTO "versions" ("id", "version_name", "semver") VALUES (19323850, '2.4.8', '2.4.8'); -INSERT INTO "versions" ("id", "version_name", "semver") VALUES (19324110, '2.3.10', '2.3.10'); -INSERT INTO "versions" ("id", "version_name", "semver") VALUES (19459307, '7.x-1.0', '7.0.0+x-1.0'); -INSERT INTO "versions" ("id", "version_name", "semver") VALUES (19460749, '1.5.9', '1.5.9'); -INSERT INTO "versions" ("id", "version_name", "semver") VALUES (19462818, '1.3.0.1', '1.3.0+1'); -INSERT INTO "versions" ("id", "version_name", "semver") VALUES (19462820, '1.3.0.2', '1.3.0+2'); -INSERT INTO "versions" ("id", "version_name", "semver") VALUES (19462971, '1.5.3.1', '1.5.3+1'); -INSERT INTO "versions" ("id", "version_name", "semver") VALUES (19465563, '1.5.2.1', '1.5.2+1'); -INSERT INTO "versions" ("id", "version_name", "semver") VALUES (19467646, '1.4.9', '1.4.9'); -INSERT INTO "versions" ("id", "version_name", "semver") VALUES (19468446, '3.2.8', '3.2.8'); -INSERT INTO "versions" ("id", "version_name", "semver") VALUES (19468627, '3.1.7', '3.1.7'); -INSERT INTO "versions" ("id", "version_name", "semver") VALUES (19468629, '3.1.8', '3.1.8'); -INSERT INTO "versions" ("id", "version_name", "semver") VALUES (19469911, '1.3.3.1', '1.3.3+1'); -INSERT INTO "versions" ("id", "version_name", "semver") VALUES (19469924, '1.5.7.1', '1.5.7+1'); -INSERT INTO "versions" ("id", "version_name", "semver") VALUES (19471530, '1.4.3.1', '1.4.3+1'); -INSERT INTO "versions" ("id", "version_name", "semver") VALUES (19475780, '1.0.27', '1.0.27'); -INSERT INTO "versions" ("id", "version_name", "semver") VALUES (19478045, '1.4.4.1', '1.4.4+1'); -INSERT INTO "versions" ("id", "version_name", "semver") VALUES (19478693, '1.1.9.7', '1.1.9+7'); -INSERT INTO "versions" ("id", "version_name", "semver") VALUES (19480103, '3.2.12', '3.2.12'); -INSERT INTO "versions" ("id", "version_name", "semver") VALUES (19480292, '3.2.10', '3.2.10'); -INSERT INTO "versions" ("id", "version_name", "semver") VALUES (19480553, '3.2.9', '3.2.9'); -INSERT INTO "versions" ("id", "version_name", "semver") VALUES (19481914, '3.4.9', '3.4.9'); -INSERT INTO "versions" ("id", "version_name", "semver") VALUES (19484820, '3.1.6', '3.1.6'); -INSERT INTO "versions" ("id", "version_name", "semver") VALUES (19484821, '3.1.9', '3.1.9'); -INSERT INTO "versions" ("id", "version_name", "semver") VALUES (19485263, '0.4.11', '0.4.11'); -INSERT INTO "versions" ("id", "version_name", "semver") VALUES (19486979, '1.6.3', '1.6.3'); -INSERT INTO "versions" ("id", "version_name", "semver") VALUES (19487001, '1.4', '1.4.0'); -INSERT INTO "versions" ("id", "version_name", "semver") VALUES (19487206, '0.15.1', '0.15.1'); -INSERT INTO "versions" ("id", "version_name", "semver") VALUES (19487278, '1.1.9.1', '1.1.9+1'); -INSERT INTO "versions" ("id", "version_name", "semver") VALUES (19487340, '0.9', '0.9.0'); -INSERT INTO "versions" ("id", "version_name", "semver") VALUES (19487460, '0.5.5', '0.5.5'); -INSERT INTO "versions" ("id", "version_name", "semver") VALUES (19487479, '2.2.1', '2.2.1'); -INSERT INTO "versions" ("id", "version_name", "semver") VALUES (19487480, '0.2.7', '0.2.7'); -INSERT INTO "versions" ("id", "version_name", "semver") VALUES (19487481, '0.2.9', '0.2.9'); -INSERT INTO "versions" ("id", "version_name", "semver") VALUES (19487482, '0.2.8', '0.2.8'); -INSERT INTO "versions" ("id", "version_name", "semver") VALUES (19487504, '0.5', '0.5.0'); -INSERT INTO "versions" ("id", "version_name", "semver") VALUES (19487573, '0.3.3', '0.3.3'); -INSERT INTO "versions" ("id", "version_name", "semver") VALUES (19487577, '0.1.10', '0.1.10'); -INSERT INTO "versions" ("id", "version_name", "semver") VALUES (19490036, '1.1.4', '1.1.4'); -INSERT INTO "versions" ("id", "version_name", "semver") VALUES (19490475, '1.6.1.1', '1.6.1+1'); -INSERT INTO "versions" ("id", "version_name", "semver") VALUES (19491044, '2.0.6', '2.0.6'); -INSERT INTO "versions" ("id", "version_name", "semver") VALUES (19491083, '3.0.2', '3.0.2'); -INSERT INTO "versions" ("id", "version_name", "semver") VALUES (19491213, '0.21.1', '0.21.1'); -INSERT INTO "versions" ("id", "version_name", "semver") VALUES (19491331, '1.3.2.1', '1.3.2+1'); -INSERT INTO "versions" ("id", "version_name", "semver") VALUES (19491698, '0.6.2', '0.6.2'); -INSERT INTO "versions" ("id", "version_name", "semver") VALUES (19494556, '2.0', '2.0.0'); -INSERT INTO "versions" ("id", "version_name", "semver") VALUES (19497916, '2.4.6', '2.4.6'); -INSERT INTO "versions" ("id", "version_name", "semver") VALUES (19500087, '1.1.9', '1.1.9'); -INSERT INTO "versions" ("id", "version_name", "semver") VALUES (19500948, '3.2.4', '3.2.4'); -INSERT INTO "versions" ("id", "version_name", "semver") VALUES (19501164, '3.0.6', '3.0.6'); -INSERT INTO "versions" ("id", "version_name", "semver") VALUES (19501262, '1.9.3', '1.9.3'); -INSERT INTO "versions" ("id", "version_name", "semver") VALUES (19502604, '2.4.4', '2.4.4'); -INSERT INTO "versions" ("id", "version_name", "semver") VALUES (19503485, '2.3.9', '2.3.9'); -INSERT INTO "versions" ("id", "version_name", "semver") VALUES (19508585, '3.3.3', '3.3.3'); -INSERT INTO "versions" ("id", "version_name", "semver") VALUES (19513403, '-', ''); -INSERT INTO "versions" ("id", "version_name", "semver") VALUES (19518492, '2.4.9', '2.4.9'); -INSERT INTO "versions" ("id", "version_name", "semver") VALUES (19525948, '3.3.2', '3.3.2'); -INSERT INTO "versions" ("id", "version_name", "semver") VALUES (19529343, '1.1.10', '1.1.10'); -INSERT INTO "versions" ("id", "version_name", "semver") VALUES (19531474, '1.5.7', '1.5.7'); -INSERT INTO "versions" ("id", "version_name", "semver") VALUES (19532454, '3.2.7', '3.2.7'); -INSERT INTO "versions" ("id", "version_name", "semver") VALUES (19532557, '1.3.5.1', '1.3.5+1'); -INSERT INTO "versions" ("id", "version_name", "semver") VALUES (19532572, '1.6', '1.6.0'); -INSERT INTO "versions" ("id", "version_name", "semver") VALUES (19533308, '3.4.3', '3.4.3'); -INSERT INTO "versions" ("id", "version_name", "semver") VALUES (19541079, '1.6.5', '1.6.5'); -INSERT INTO "versions" ("id", "version_name", "semver") VALUES (19541010, '0.0.1', '0.0.1'); -INSERT INTO "versions" ("id", "version_name", "semver") VALUES (19541011, '0.0.10', '0.0.10'); -INSERT INTO "versions" ("id", "version_name", "semver") VALUES (258510, '0.0.12', 'v0.0.12'); -INSERT INTO "versions" ("id", "version_name", "semver") VALUES (11435747, '0.0.11', 'v0.0.1-1'); -INSERT INTO "versions" ("id", "version_name", "semver") VALUES (19836180,'0.10.52-4','0.10.52+4'); -INSERT INTO "versions" ("id", "version_name", "semver") VALUES (11640350, '1.7.0', 'v1.7.0'); -INSERT INTO "versions" ("id", "version_name", "semver") VALUES (5193086, '1.19.0', ''); -INSERT INTO "versions" ("id", "version_name", "semver") VALUES (30001, '15.0.0', '15.0.0'); \ No newline at end of file +-- Test data only. The schema comes from testSchemaDDL in pkg/models/test_schema.go; do not add DDL here. +INSERT INTO versions (id, version_name, semver) VALUES (1365, '3.4.2', '3.4.2'); +INSERT INTO versions (id, version_name, semver) VALUES (1394, '3.0.3', '3.0.3'); +INSERT INTO versions (id, version_name, semver) VALUES (1794, '5.0.1', '5.0.1'); +INSERT INTO versions (id, version_name, semver) VALUES (1795, '3.0', '3.0.0'); +INSERT INTO versions (id, version_name, semver) VALUES (1993, '5.0.3', '5.0.3'); +INSERT INTO versions (id, version_name, semver) VALUES (1998, '4.0.1', '4.0.1'); +INSERT INTO versions (id, version_name, semver) VALUES (2025, '3.2.0', '3.2.0'); +INSERT INTO versions (id, version_name, semver) VALUES (2683, '2.0.4', '2.0.4'); +INSERT INTO versions (id, version_name, semver) VALUES (8481, '1.6.4', '1.6.4'); +INSERT INTO versions (id, version_name, semver) VALUES (8720, '2.3.8', '2.3.8'); +INSERT INTO versions (id, version_name, semver) VALUES (8723, '3.1.4', '3.1.4'); +INSERT INTO versions (id, version_name, semver) VALUES (8873, '3.4.7', '3.4.7'); +INSERT INTO versions (id, version_name, semver) VALUES (8878, '2.3.6', '2.3.6'); +INSERT INTO versions (id, version_name, semver) VALUES (8889, '3.2.6', '3.2.6'); +INSERT INTO versions (id, version_name, semver) VALUES (8917, '2.4.7', '2.4.7'); +INSERT INTO versions (id, version_name, semver) VALUES (8918, '2.3.5', '2.3.5'); +INSERT INTO versions (id, version_name, semver) VALUES (9111, '3.3.6', '3.3.6'); +INSERT INTO versions (id, version_name, semver) VALUES (9113, '3.1.3', '3.1.3'); +INSERT INTO versions (id, version_name, semver) VALUES (9123, '2.3.11', '2.3.11'); +INSERT INTO versions (id, version_name, semver) VALUES (9154, '3.1.5', '3.1.5'); +INSERT INTO versions (id, version_name, semver) VALUES (10371, '1.5.8', '1.5.8'); +INSERT INTO versions (id, version_name, semver) VALUES (11418, '1.3.3', '1.3.3'); +INSERT INTO versions (id, version_name, semver) VALUES (12882, '4.0.2', '4.0.2'); +INSERT INTO versions (id, version_name, semver) VALUES (13146, '1.3.5', '1.3.5'); +INSERT INTO versions (id, version_name, semver) VALUES (13150, '3.1.2', '3.1.2'); +INSERT INTO versions (id, version_name, semver) VALUES (13152, '3.2.1', '3.2.1'); +INSERT INTO versions (id, version_name, semver) VALUES (13279, '1.4.4', '1.4.4'); +INSERT INTO versions (id, version_name, semver) VALUES (13284, '1.5.2', '1.5.2'); +INSERT INTO versions (id, version_name, semver) VALUES (13517, '1.4.6', '1.4.6'); +INSERT INTO versions (id, version_name, semver) VALUES (13571, '2.1.4', '2.1.4'); +INSERT INTO versions (id, version_name, semver) VALUES (13904, '3.0.9', '3.0.9'); +INSERT INTO versions (id, version_name, semver) VALUES (13940, '3.0.8', '3.0.8'); +INSERT INTO versions (id, version_name, semver) VALUES (13943, '3.0.10', '3.0.10'); +INSERT INTO versions (id, version_name, semver) VALUES (13949, '3.0.11', '3.0.11'); +INSERT INTO versions (id, version_name, semver) VALUES (13961, '3.0.12', '3.0.12'); +INSERT INTO versions (id, version_name, semver) VALUES (13966, '3.0.13', '3.0.13'); +INSERT INTO versions (id, version_name, semver) VALUES (13967, '3.0.7', '3.0.7'); +INSERT INTO versions (id, version_name, semver) VALUES (14302, '0.0.9', '0.0.9'); +INSERT INTO versions (id, version_name, semver) VALUES (14400, '3.2.5', '3.2.5'); +INSERT INTO versions (id, version_name, semver) VALUES (14489, '3.4.6', '3.4.6'); +INSERT INTO versions (id, version_name, semver) VALUES (14540, '1.1.5', '1.1.5'); +INSERT INTO versions (id, version_name, semver) VALUES (14619, '3.2.2', '3.2.2'); +INSERT INTO versions (id, version_name, semver) VALUES (14621, '2.2.4', '2.2.4'); +INSERT INTO versions (id, version_name, semver) VALUES (14744, '1.1.6', '1.1.6'); +INSERT INTO versions (id, version_name, semver) VALUES (14796, '0.0.5', '0.0.5'); +INSERT INTO versions (id, version_name, semver) VALUES (14797, '0.0.7', '0.0.7'); +INSERT INTO versions (id, version_name, semver) VALUES (14851, '0.2.5', '0.2.5'); +INSERT INTO versions (id, version_name, semver) VALUES (14867, '0.1.6', '0.1.6'); +INSERT INTO versions (id, version_name, semver) VALUES (14943, '0.13.0', '0.13.0'); +INSERT INTO versions (id, version_name, semver) VALUES (14944, '0.9.0', '0.9.0'); +INSERT INTO versions (id, version_name, semver) VALUES (14945, '0.4.3', '0.4.3'); +INSERT INTO versions (id, version_name, semver) VALUES (14946, '1.5.4', '1.5.4'); +INSERT INTO versions (id, version_name, semver) VALUES (14948, '0.7.2', '0.7.2'); +INSERT INTO versions (id, version_name, semver) VALUES (15000, '0.1.4', '0.1.4'); +INSERT INTO versions (id, version_name, semver) VALUES (15003, '3.0.5', '3.0.5'); +INSERT INTO versions (id, version_name, semver) VALUES (15028, '3.3.4', '3.3.4'); +INSERT INTO versions (id, version_name, semver) VALUES (15029, '2.4.3', '2.4.3'); +INSERT INTO versions (id, version_name, semver) VALUES (15050, '0.15.0', '0.15.0'); +INSERT INTO versions (id, version_name, semver) VALUES (15081, '0.8.0', '0.8.0'); +INSERT INTO versions (id, version_name, semver) VALUES (15145, '2.4.5', '2.4.5'); +INSERT INTO versions (id, version_name, semver) VALUES (15188, '0.1.7', '0.1.7'); +INSERT INTO versions (id, version_name, semver) VALUES (15189, '2.1.5', '2.1.5'); +INSERT INTO versions (id, version_name, semver) VALUES (15193, '5.0.2', '5.0.2'); +INSERT INTO versions (id, version_name, semver) VALUES (15211, '0.1.8', '0.1.8'); +INSERT INTO versions (id, version_name, semver) VALUES (15231, '1.5.1', '1.5.1'); +INSERT INTO versions (id, version_name, semver) VALUES (15232, '1.6.1', '1.6.1'); +INSERT INTO versions (id, version_name, semver) VALUES (15235, '0.2.4', '0.2.4'); +INSERT INTO versions (id, version_name, semver) VALUES (15264, '3.3.0', '3.3.0'); +INSERT INTO versions (id, version_name, semver) VALUES (15302, '3.3.5', '3.3.5'); +INSERT INTO versions (id, version_name, semver) VALUES (15337, '2.4.1', '2.4.1'); +INSERT INTO versions (id, version_name, semver) VALUES (17890, '2.3.7', '2.3.7'); +INSERT INTO versions (id, version_name, semver) VALUES (22072, '1.1.2', '1.1.2'); +INSERT INTO versions (id, version_name, semver) VALUES (215573, '1.9.0', '1.9.0'); +INSERT INTO versions (id, version_name, semver) VALUES (233375, '0.1.9', '0.1.9'); +INSERT INTO versions (id, version_name, semver) VALUES (237532, '3.3.1', '3.3.1'); +INSERT INTO versions (id, version_name, semver) VALUES (241746, '0.12.0', '0.12.0'); +INSERT INTO versions (id, version_name, semver) VALUES (243167, '3.4.0', '3.4.0'); +INSERT INTO versions (id, version_name, semver) VALUES (244660, '2.3.2', '2.3.2'); +INSERT INTO versions (id, version_name, semver) VALUES (244764, '0.8', '0.8.0'); +INSERT INTO versions (id, version_name, semver) VALUES (247658, '0.4.2', '0.4.2'); +INSERT INTO versions (id, version_name, semver) VALUES (247848, '1.2.3', '1.2.3'); +INSERT INTO versions (id, version_name, semver) VALUES (248486, '0.6.0', '0.6.0'); +INSERT INTO versions (id, version_name, semver) VALUES (249058, '1.1.3', '1.1.3'); +INSERT INTO versions (id, version_name, semver) VALUES (249253, '3.2.3', '3.2.3'); +INSERT INTO versions (id, version_name, semver) VALUES (249755, '0.4.0', '0.4.0'); +INSERT INTO versions (id, version_name, semver) VALUES (249772, '0.10.0', '0.10.0'); +INSERT INTO versions (id, version_name, semver) VALUES (249774, '0.8.1', '0.8.1'); +INSERT INTO versions (id, version_name, semver) VALUES (250722, '2.1.6', '2.1.6'); +INSERT INTO versions (id, version_name, semver) VALUES (250884, '0.1.3', '0.1.3'); +INSERT INTO versions (id, version_name, semver) VALUES (251176, '2.2.3', '2.2.3'); +INSERT INTO versions (id, version_name, semver) VALUES (251178, '2.4.2', '2.4.2'); +INSERT INTO versions (id, version_name, semver) VALUES (251179, '2.2.0', '2.2.0'); +INSERT INTO versions (id, version_name, semver) VALUES (251181, '2.4.0', '2.4.0'); +INSERT INTO versions (id, version_name, semver) VALUES (251751, '1.0.8', '1.0.8'); +INSERT INTO versions (id, version_name, semver) VALUES (252059, '5.0.0', '5.0.0'); +INSERT INTO versions (id, version_name, semver) VALUES (252066, '3.0.4', '3.0.4'); +INSERT INTO versions (id, version_name, semver) VALUES (252221, '2.3.4', '2.3.4'); +INSERT INTO versions (id, version_name, semver) VALUES (252261, '0.3.1', '0.3.1'); +INSERT INTO versions (id, version_name, semver) VALUES (252413, '0.6', '0.6.0'); +INSERT INTO versions (id, version_name, semver) VALUES (252454, '0.5.0', '0.5.0'); +INSERT INTO versions (id, version_name, semver) VALUES (252546, '0.1.5', '0.1.5'); +INSERT INTO versions (id, version_name, semver) VALUES (252547, '0.0.4', '0.0.4'); +INSERT INTO versions (id, version_name, semver) VALUES (252611, '1.3.2', '1.3.2'); +INSERT INTO versions (id, version_name, semver) VALUES (252612, '4.0.0', '4.0.0'); +INSERT INTO versions (id, version_name, semver) VALUES (252638, '0.3.4', '0.3.4'); +INSERT INTO versions (id, version_name, semver) VALUES (252639, '0.11.0', '0.11.0'); +INSERT INTO versions (id, version_name, semver) VALUES (252640, '2.1.3', '2.1.3'); +INSERT INTO versions (id, version_name, semver) VALUES (252657, '1.1.7', '1.1.7'); +INSERT INTO versions (id, version_name, semver) VALUES (252703, '2.2.2', '2.2.2'); +INSERT INTO versions (id, version_name, semver) VALUES (252814, '0.3.0', '0.3.0'); +INSERT INTO versions (id, version_name, semver) VALUES (252815, '2.3.3', '2.3.3'); +INSERT INTO versions (id, version_name, semver) VALUES (252983, '1.1.8', '1.1.8'); +INSERT INTO versions (id, version_name, semver) VALUES (253031, '3.1.1', '3.1.1'); +INSERT INTO versions (id, version_name, semver) VALUES (253139, '0.2.3', '0.2.3'); +INSERT INTO versions (id, version_name, semver) VALUES (253846, '1.0.7', '1.0.7'); +INSERT INTO versions (id, version_name, semver) VALUES (254033, '1.9.4', '1.9.4'); +INSERT INTO versions (id, version_name, semver) VALUES (254832, '2.2.5', '2.2.5'); +INSERT INTO versions (id, version_name, semver) VALUES (255921, '0.3.2', '0.3.2'); +INSERT INTO versions (id, version_name, semver) VALUES (256416, '0.6.1', '0.6.1'); +INSERT INTO versions (id, version_name, semver) VALUES (256715, '1.4.3', '1.4.3'); +INSERT INTO versions (id, version_name, semver) VALUES (257434, '2.0.7', '2.0.7'); +INSERT INTO versions (id, version_name, semver) VALUES (257513, '2.3.0', '2.3.0'); +INSERT INTO versions (id, version_name, semver) VALUES (257682, '1.4.2', '1.4.2'); +INSERT INTO versions (id, version_name, semver) VALUES (258303, '1.2.2', '1.2.2'); +INSERT INTO versions (id, version_name, semver) VALUES (260652, '1.4.0', '1.4.0'); +INSERT INTO versions (id, version_name, semver) VALUES (261941, '1.6.2', '1.6.2'); +INSERT INTO versions (id, version_name, semver) VALUES (262138, '2.0.5', '2.0.5'); +INSERT INTO versions (id, version_name, semver) VALUES (262155, '2.0.2', '2.0.2'); +INSERT INTO versions (id, version_name, semver) VALUES (262603, '0.4.1', '0.4.1'); +INSERT INTO versions (id, version_name, semver) VALUES (262607, '3.1.0', '3.1.0'); +INSERT INTO versions (id, version_name, semver) VALUES (263095, '3.0.1', '3.0.1'); +INSERT INTO versions (id, version_name, semver) VALUES (263168, '1.0.6', '1.0.6'); +INSERT INTO versions (id, version_name, semver) VALUES (263169, '0.1.2', '0.1.2'); +INSERT INTO versions (id, version_name, semver) VALUES (263171, '1.3.1', '1.3.1'); +INSERT INTO versions (id, version_name, semver) VALUES (263265, '1.1', '1.1.0'); +INSERT INTO versions (id, version_name, semver) VALUES (263266, '2.1.1', '2.1.1'); +INSERT INTO versions (id, version_name, semver) VALUES (263333, '1.0.9', '1.0.9'); +INSERT INTO versions (id, version_name, semver) VALUES (263437, '1.6.0', '1.6.0'); +INSERT INTO versions (id, version_name, semver) VALUES (263438, '1.2.0', '1.2.0'); +INSERT INTO versions (id, version_name, semver) VALUES (263449, '0.0.6', '0.0.6'); +INSERT INTO versions (id, version_name, semver) VALUES (263539, '2.1.2', '2.1.2'); +INSERT INTO versions (id, version_name, semver) VALUES (263698, '0.2.2', '0.2.2'); +INSERT INTO versions (id, version_name, semver) VALUES (263699, '2.0.3', '2.0.3'); +INSERT INTO versions (id, version_name, semver) VALUES (264098, '1.5.0', '1.5.0'); +INSERT INTO versions (id, version_name, semver) VALUES (264113, '1.3', '1.3.0'); +INSERT INTO versions (id, version_name, semver) VALUES (264114, '1.0.5', '1.0.5'); +INSERT INTO versions (id, version_name, semver) VALUES (264115, '1.4.1', '1.4.1'); +INSERT INTO versions (id, version_name, semver) VALUES (264231, '0.13.1', '0.13.1'); +INSERT INTO versions (id, version_name, semver) VALUES (264249, '0.7.0', '0.7.0'); +INSERT INTO versions (id, version_name, semver) VALUES (264251, '2.1.0', '2.1.0'); +INSERT INTO versions (id, version_name, semver) VALUES (264337, '1.1.1', '1.1.1'); +INSERT INTO versions (id, version_name, semver) VALUES (264338, '1.3.0', '1.3.0'); +INSERT INTO versions (id, version_name, semver) VALUES (264339, '1.1.0', '1.1.0'); +INSERT INTO versions (id, version_name, semver) VALUES (264557, '0.2.1', '0.2.1'); +INSERT INTO versions (id, version_name, semver) VALUES (264642, '1.2', '1.2.0'); +INSERT INTO versions (id, version_name, semver) VALUES (264643, '0.0.3', '0.0.3'); +INSERT INTO versions (id, version_name, semver) VALUES (264714, '0.0.8', '0.0.8'); +INSERT INTO versions (id, version_name, semver) VALUES (264721, '0.0.2', '0.0.2'); +INSERT INTO versions (id, version_name, semver) VALUES (264897, '1.2.1', '1.2.1'); +INSERT INTO versions (id, version_name, semver) VALUES (264996, '2.3.1', '2.3.1'); +INSERT INTO versions (id, version_name, semver) VALUES (265074, '3.0.0', '3.0.0'); +INSERT INTO versions (id, version_name, semver) VALUES (265075, '2.0.1', '2.0.1'); +INSERT INTO versions (id, version_name, semver) VALUES (265076, '2.0.0', '2.0.0'); +INSERT INTO versions (id, version_name, semver) VALUES (265149, '1.0.3', '1.0.3'); +INSERT INTO versions (id, version_name, semver) VALUES (265150, '1.0.2', '1.0.2'); +INSERT INTO versions (id, version_name, semver) VALUES (265151, '0.1.1', '0.1.1'); +INSERT INTO versions (id, version_name, semver) VALUES (265152, '1.0.4', '1.0.4'); +INSERT INTO versions (id, version_name, semver) VALUES (265153, '1.0.0', '1.0.0'); +INSERT INTO versions (id, version_name, semver) VALUES (265154, '1.0.1', '1.0.1'); +INSERT INTO versions (id, version_name, semver) VALUES (265155, '0.2.0', '0.2.0'); +INSERT INTO versions (id, version_name, semver) VALUES (265156, '0.1.0', '0.1.0'); +INSERT INTO versions (id, version_name, semver) VALUES (265157, '1.0', '1.0.0'); +INSERT INTO versions (id, version_name, semver) VALUES (1999301, '1.5.0.5', '1.5.0+5'); +INSERT INTO versions (id, version_name, semver) VALUES (3720103, '0.16.0', '0.16.0'); +INSERT INTO versions (id, version_name, semver) VALUES (5127876, '0.22.0', '0.22.0'); +INSERT INTO versions (id, version_name, semver) VALUES (5128616, '0.21.0', '0.21.0'); +INSERT INTO versions (id, version_name, semver) VALUES (5482104, '0.2.11', '0.2.11'); +INSERT INTO versions (id, version_name, semver) VALUES (5600056, '1.3.4.1', '1.3.4+1'); +INSERT INTO versions (id, version_name, semver) VALUES (5617453, '1.6.6', '1.6.6'); +INSERT INTO versions (id, version_name, semver) VALUES (5670099, '0.8.3', '0.8.3'); +INSERT INTO versions (id, version_name, semver) VALUES (5811416, '3.4.5', '3.4.5'); +INSERT INTO versions (id, version_name, semver) VALUES (5835723, '0.7', '0.7.0'); +INSERT INTO versions (id, version_name, semver) VALUES (6138488, '0.3.6', '0.3.6'); +INSERT INTO versions (id, version_name, semver) VALUES (6140300, '0.2.6', '0.2.6'); +INSERT INTO versions (id, version_name, semver) VALUES (6155011, '0.3.5', '0.3.5'); +INSERT INTO versions (id, version_name, semver) VALUES (6277397, '1.3.4.2', '1.3.4+2'); +INSERT INTO versions (id, version_name, semver) VALUES (6357014, '3.0.6.1', '3.0.6+1'); +INSERT INTO versions (id, version_name, semver) VALUES (6544148, '3.3.7', '3.3.7'); +INSERT INTO versions (id, version_name, semver) VALUES (6703009, '1.3.1.2', '1.3.1+2'); +INSERT INTO versions (id, version_name, semver) VALUES (6895007, '0.17.0', '0.17.0'); +INSERT INTO versions (id, version_name, semver) VALUES (7083951, '1.4.8', '1.4.8'); +INSERT INTO versions (id, version_name, semver) VALUES (7235805, '1.5.0.6', '1.5.0+6'); +INSERT INTO versions (id, version_name, semver) VALUES (7256833, '0.4.4', '0.4.4'); +INSERT INTO versions (id, version_name, semver) VALUES (7405670, '0.14.0', '0.14.0'); +INSERT INTO versions (id, version_name, semver) VALUES (7818861, '0.20.0', '0.20.0'); +INSERT INTO versions (id, version_name, semver) VALUES (7892814, '1.4.5', '1.4.5'); +INSERT INTO versions (id, version_name, semver) VALUES (8474638, '1.1.9.6', '1.1.9+6'); +INSERT INTO versions (id, version_name, semver) VALUES (8660478, '1.5.5', '1.5.5'); +INSERT INTO versions (id, version_name, semver) VALUES (8795532, '1.4.7', '1.4.7'); +INSERT INTO versions (id, version_name, semver) VALUES (8912914, '1.1.9.9', '1.1.9+9'); +INSERT INTO versions (id, version_name, semver) VALUES (8952136, '0.14.1', '0.14.1'); +INSERT INTO versions (id, version_name, semver) VALUES (9540297, '3.4.8', '3.4.8'); +INSERT INTO versions (id, version_name, semver) VALUES (9909761, '1.4.5.1', '1.4.5+1'); +INSERT INTO versions (id, version_name, semver) VALUES (10206536, '1.1.9.4', '1.1.9+4'); +INSERT INTO versions (id, version_name, semver) VALUES (10333707, '1.1.9.8', '1.1.9+8'); +INSERT INTO versions (id, version_name, semver) VALUES (10429338, '1.5.0.10', '1.5.0+10'); +INSERT INTO versions (id, version_name, semver) VALUES (10499956, '1.3.5.3', '1.3.5+3'); +INSERT INTO versions (id, version_name, semver) VALUES (10522622, '1.5.0.4', '1.5.0+4'); +INSERT INTO versions (id, version_name, semver) VALUES (10817733, '1.5.3', '1.5.3'); +INSERT INTO versions (id, version_name, semver) VALUES (10907584, '0.6.3', '0.6.3'); +INSERT INTO versions (id, version_name, semver) VALUES (11098064, '0.18.0', '0.18.0'); +INSERT INTO versions (id, version_name, semver) VALUES (11283815, '1.5.0.7', '1.5.0+7'); +INSERT INTO versions (id, version_name, semver) VALUES (11379260, '3.4.1', '3.4.1'); +INSERT INTO versions (id, version_name, semver) VALUES (11466378, '0.2.10', '0.2.10'); +INSERT INTO versions (id, version_name, semver) VALUES (11562873, '1.5.0.9', '1.5.0+9'); +INSERT INTO versions (id, version_name, semver) VALUES (11647042, '2.3.12', '2.3.12'); +INSERT INTO versions (id, version_name, semver) VALUES (12136986, '0.23.0', '0.23.0'); +INSERT INTO versions (id, version_name, semver) VALUES (12192601, '3.2.11', '3.2.11'); +INSERT INTO versions (id, version_name, semver) VALUES (12448282, '3.4.4', '3.4.4'); +INSERT INTO versions (id, version_name, semver) VALUES (12690234, '2.1', '2.1.0'); +INSERT INTO versions (id, version_name, semver) VALUES (12797296, '0.4.5', '0.4.5'); +INSERT INTO versions (id, version_name, semver) VALUES (13093993, '1.1.9.5', '1.1.9+5'); +INSERT INTO versions (id, version_name, semver) VALUES (13117909, '1.1.9.10', '1.1.9+10'); +INSERT INTO versions (id, version_name, semver) VALUES (13616284, '1.5', '1.5.0'); +INSERT INTO versions (id, version_name, semver) VALUES (13695671, '1.5.0.1-3', '1.5.0+1.3'); +INSERT INTO versions (id, version_name, semver) VALUES (13819035, '1.5.0.8', '1.5.0+8'); +INSERT INTO versions (id, version_name, semver) VALUES (13877853, '1.1.9.3', '1.1.9+3'); +INSERT INTO versions (id, version_name, semver) VALUES (13917822, '1.5.6.1', '1.5.6+1'); +INSERT INTO versions (id, version_name, semver) VALUES (13934859, '1.1.9.2', '1.1.9+2'); +INSERT INTO versions (id, version_name, semver) VALUES (14051023, '1.9.2', '1.9.2'); +INSERT INTO versions (id, version_name, semver) VALUES (14250461, '3.2.13', '3.2.13'); +INSERT INTO versions (id, version_name, semver) VALUES (14251660, '1.5.6.2', '1.5.6+2'); +INSERT INTO versions (id, version_name, semver) VALUES (14268199, '3.3.8', '3.3.8'); +INSERT INTO versions (id, version_name, semver) VALUES (16550345, '2.4.10', '2.4.10'); +INSERT INTO versions (id, version_name, semver) VALUES (17151752, '1.3.5.2', '1.3.5+2'); +INSERT INTO versions (id, version_name, semver) VALUES (19258660, '1.0.91', '1.0.91'); +INSERT INTO versions (id, version_name, semver) VALUES (19269674, '0.19.0', '0.19.0'); +INSERT INTO versions (id, version_name, semver) VALUES (19291862, '1.5.6', '1.5.6'); +INSERT INTO versions (id, version_name, semver) VALUES (19295009, '0.17.2', '0.17.2'); +INSERT INTO versions (id, version_name, semver) VALUES (19295050, '0.4.27', '0.4.27'); +INSERT INTO versions (id, version_name, semver) VALUES (19299214, '1.9.5', '1.9.5'); +INSERT INTO versions (id, version_name, semver) VALUES (19322787, '1.9.1', '1.9.1'); +INSERT INTO versions (id, version_name, semver) VALUES (19323850, '2.4.8', '2.4.8'); +INSERT INTO versions (id, version_name, semver) VALUES (19324110, '2.3.10', '2.3.10'); +INSERT INTO versions (id, version_name, semver) VALUES (19459307, '7.x-1.0', '7.0.0+x-1.0'); +INSERT INTO versions (id, version_name, semver) VALUES (19460749, '1.5.9', '1.5.9'); +INSERT INTO versions (id, version_name, semver) VALUES (19462818, '1.3.0.1', '1.3.0+1'); +INSERT INTO versions (id, version_name, semver) VALUES (19462820, '1.3.0.2', '1.3.0+2'); +INSERT INTO versions (id, version_name, semver) VALUES (19462971, '1.5.3.1', '1.5.3+1'); +INSERT INTO versions (id, version_name, semver) VALUES (19465563, '1.5.2.1', '1.5.2+1'); +INSERT INTO versions (id, version_name, semver) VALUES (19467646, '1.4.9', '1.4.9'); +INSERT INTO versions (id, version_name, semver) VALUES (19468446, '3.2.8', '3.2.8'); +INSERT INTO versions (id, version_name, semver) VALUES (19468627, '3.1.7', '3.1.7'); +INSERT INTO versions (id, version_name, semver) VALUES (19468629, '3.1.8', '3.1.8'); +INSERT INTO versions (id, version_name, semver) VALUES (19469911, '1.3.3.1', '1.3.3+1'); +INSERT INTO versions (id, version_name, semver) VALUES (19469924, '1.5.7.1', '1.5.7+1'); +INSERT INTO versions (id, version_name, semver) VALUES (19471530, '1.4.3.1', '1.4.3+1'); +INSERT INTO versions (id, version_name, semver) VALUES (19475780, '1.0.27', '1.0.27'); +INSERT INTO versions (id, version_name, semver) VALUES (19478045, '1.4.4.1', '1.4.4+1'); +INSERT INTO versions (id, version_name, semver) VALUES (19478693, '1.1.9.7', '1.1.9+7'); +INSERT INTO versions (id, version_name, semver) VALUES (19480103, '3.2.12', '3.2.12'); +INSERT INTO versions (id, version_name, semver) VALUES (19480292, '3.2.10', '3.2.10'); +INSERT INTO versions (id, version_name, semver) VALUES (19480553, '3.2.9', '3.2.9'); +INSERT INTO versions (id, version_name, semver) VALUES (19481914, '3.4.9', '3.4.9'); +INSERT INTO versions (id, version_name, semver) VALUES (19484820, '3.1.6', '3.1.6'); +INSERT INTO versions (id, version_name, semver) VALUES (19484821, '3.1.9', '3.1.9'); +INSERT INTO versions (id, version_name, semver) VALUES (19485263, '0.4.11', '0.4.11'); +INSERT INTO versions (id, version_name, semver) VALUES (19486979, '1.6.3', '1.6.3'); +INSERT INTO versions (id, version_name, semver) VALUES (19487001, '1.4', '1.4.0'); +INSERT INTO versions (id, version_name, semver) VALUES (19487206, '0.15.1', '0.15.1'); +INSERT INTO versions (id, version_name, semver) VALUES (19487278, '1.1.9.1', '1.1.9+1'); +INSERT INTO versions (id, version_name, semver) VALUES (19487340, '0.9', '0.9.0'); +INSERT INTO versions (id, version_name, semver) VALUES (19487460, '0.5.5', '0.5.5'); +INSERT INTO versions (id, version_name, semver) VALUES (19487479, '2.2.1', '2.2.1'); +INSERT INTO versions (id, version_name, semver) VALUES (19487480, '0.2.7', '0.2.7'); +INSERT INTO versions (id, version_name, semver) VALUES (19487481, '0.2.9', '0.2.9'); +INSERT INTO versions (id, version_name, semver) VALUES (19487482, '0.2.8', '0.2.8'); +INSERT INTO versions (id, version_name, semver) VALUES (19487504, '0.5', '0.5.0'); +INSERT INTO versions (id, version_name, semver) VALUES (19487573, '0.3.3', '0.3.3'); +INSERT INTO versions (id, version_name, semver) VALUES (19487577, '0.1.10', '0.1.10'); +INSERT INTO versions (id, version_name, semver) VALUES (19490036, '1.1.4', '1.1.4'); +INSERT INTO versions (id, version_name, semver) VALUES (19490475, '1.6.1.1', '1.6.1+1'); +INSERT INTO versions (id, version_name, semver) VALUES (19491044, '2.0.6', '2.0.6'); +INSERT INTO versions (id, version_name, semver) VALUES (19491083, '3.0.2', '3.0.2'); +INSERT INTO versions (id, version_name, semver) VALUES (19491213, '0.21.1', '0.21.1'); +INSERT INTO versions (id, version_name, semver) VALUES (19491331, '1.3.2.1', '1.3.2+1'); +INSERT INTO versions (id, version_name, semver) VALUES (19491698, '0.6.2', '0.6.2'); +INSERT INTO versions (id, version_name, semver) VALUES (19494556, '2.0', '2.0.0'); +INSERT INTO versions (id, version_name, semver) VALUES (19497916, '2.4.6', '2.4.6'); +INSERT INTO versions (id, version_name, semver) VALUES (19500087, '1.1.9', '1.1.9'); +INSERT INTO versions (id, version_name, semver) VALUES (19500948, '3.2.4', '3.2.4'); +INSERT INTO versions (id, version_name, semver) VALUES (19501164, '3.0.6', '3.0.6'); +INSERT INTO versions (id, version_name, semver) VALUES (19501262, '1.9.3', '1.9.3'); +INSERT INTO versions (id, version_name, semver) VALUES (19502604, '2.4.4', '2.4.4'); +INSERT INTO versions (id, version_name, semver) VALUES (19503485, '2.3.9', '2.3.9'); +INSERT INTO versions (id, version_name, semver) VALUES (19508585, '3.3.3', '3.3.3'); +INSERT INTO versions (id, version_name, semver) VALUES (19513403, '-', ''); +INSERT INTO versions (id, version_name, semver) VALUES (19518492, '2.4.9', '2.4.9'); +INSERT INTO versions (id, version_name, semver) VALUES (19525948, '3.3.2', '3.3.2'); +INSERT INTO versions (id, version_name, semver) VALUES (19529343, '1.1.10', '1.1.10'); +INSERT INTO versions (id, version_name, semver) VALUES (19531474, '1.5.7', '1.5.7'); +INSERT INTO versions (id, version_name, semver) VALUES (19532454, '3.2.7', '3.2.7'); +INSERT INTO versions (id, version_name, semver) VALUES (19532557, '1.3.5.1', '1.3.5+1'); +INSERT INTO versions (id, version_name, semver) VALUES (19532572, '1.6', '1.6.0'); +INSERT INTO versions (id, version_name, semver) VALUES (19533308, '3.4.3', '3.4.3'); +INSERT INTO versions (id, version_name, semver) VALUES (19541079, '1.6.5', '1.6.5'); +INSERT INTO versions (id, version_name, semver) VALUES (19541010, '0.0.1', '0.0.1'); +INSERT INTO versions (id, version_name, semver) VALUES (19541011, '0.0.10', '0.0.10'); +INSERT INTO versions (id, version_name, semver) VALUES (258510, '0.0.12', 'v0.0.12'); +INSERT INTO versions (id, version_name, semver) VALUES (11435747, '0.0.11', 'v0.0.1-1'); +INSERT INTO versions (id, version_name, semver) VALUES (19836180, '0.10.52-4', '0.10.52+4'); +INSERT INTO versions (id, version_name, semver) VALUES (11640350, '1.7.0', 'v1.7.0'); +INSERT INTO versions (id, version_name, semver) VALUES (5193086, '1.19.0', ''); +INSERT INTO versions (id, version_name, semver) VALUES (30001, '15.0.0', '15.0.0'); diff --git a/pkg/models/tests/vulns_scenario.sql b/pkg/models/tests/vulns_scenario.sql new file mode 100644 index 0000000..387af29 --- /dev/null +++ b/pkg/models/tests/vulns_scenario.sql @@ -0,0 +1,54 @@ +-- Test data only. The schema comes from testSchemaDDL in pkg/models/test_schema.go; do not add DDL here. +-- +-- A deterministic vulnerability scenario for one component, wired the way the real +-- schema links things: purl -> short_cpe_purl.cpe_id -> nvd_match_criteria_ids.short_cpe_id +-- -> match_criteria_id -> cves.match_criteria_ids. +-- +-- The pre-existing fixtures cannot exercise this path at all: every row in +-- ndv_match_criteria_ids.sql has short_cpe_id = null, because the old query joined +-- through a cpe_ids column the schema does not define. +-- +-- Component: pkg:github/scanoss/testcomp, versions 1.0.0 / 2.0.0 / 3.0.0. +-- The four match criteria below cover each version-bound combination, so the +-- version filtering can be asserted at its edges. + +INSERT INTO purls (purl, id) VALUES ('pkg:github/scanoss/testcomp', 900001); +INSERT INTO short_cpes (id) VALUES (900001); +INSERT INTO short_cpe_purl (cpe_id, purl_id, purl) VALUES (900001, 900001, 'pkg:github/scanoss/testcomp'); + +INSERT INTO versions (id, version_name, semver) VALUES (900001, '1.0.0', '1.0.0'); +INSERT INTO versions (id, version_name, semver) VALUES (900002, '2.0.0', '2.0.0'); +INSERT INTO versions (id, version_name, semver) VALUES (900003, '3.0.0', '3.0.0'); + +INSERT INTO cpes (cpe, version_id, short_cpe_id) VALUES ('cpe:2.3:a:scanoss:testcomp:1.0.0:*:*:*:*:*:*:*', 900001, 900001); +INSERT INTO cpes (cpe, version_id, short_cpe_id) VALUES ('cpe:2.3:a:scanoss:testcomp:2.0.0:*:*:*:*:*:*:*', 900002, 900001); +INSERT INTO cpes (cpe, version_id, short_cpe_id) VALUES ('cpe:2.3:a:scanoss:testcomp:3.0.0:*:*:*:*:*:*:*', 900003, 900001); + +-- everything up to and including 2.0.0 -> matches 1.0.0, 2.0.0 +INSERT INTO nvd_match_criteria_ids (match_criteria_id, short_cpe_id, version_start_including, version_start_excluding, version_end_including, version_end_excluding) +VALUES ('MC-END-INCL-2', 900001, '', '', '2.0.0', ''); +-- everything from 3.0.0 upwards -> matches 3.0.0 +INSERT INTO nvd_match_criteria_ids (match_criteria_id, short_cpe_id, version_start_including, version_start_excluding, version_end_including, version_end_excluding) +VALUES ('MC-START-INCL-3', 900001, '3.0.0', '', '', ''); +-- exactly 1.0.0 +INSERT INTO nvd_match_criteria_ids (match_criteria_id, short_cpe_id, version_start_including, version_start_excluding, version_end_including, version_end_excluding) +VALUES ('MC-EXACT-1', 900001, '1.0.0', '', '1.0.0', ''); +-- strictly between 1.0.0 and 3.0.0 -> matches 2.0.0 only +INSERT INTO nvd_match_criteria_ids (match_criteria_id, short_cpe_id, version_start_including, version_start_excluding, version_end_including, version_end_excluding) +VALUES ('MC-BETWEEN-EXCL', 900001, '', '1.0.0', '', '3.0.0'); +-- belongs to a different component: must never show up for testcomp +INSERT INTO nvd_match_criteria_ids (match_criteria_id, short_cpe_id, version_start_including, version_start_excluding, version_end_including, version_end_excluding) +VALUES ('MC-UNRELATED', 900099, '', '', '', ''); + +INSERT INTO cves (cve, severity, published, modified, summary, match_criteria_ids) +VALUES ('CVE-TEST-0001', 'HIGH', '2020-01-15', '2020-06-30', 'affects up to and including 2.0.0', '{MC-END-INCL-2}'); +INSERT INTO cves (cve, severity, published, modified, summary, match_criteria_ids) +VALUES ('CVE-TEST-0002', 'LOW', '2021-02-20', '2021-07-01', 'affects 3.0.0 and later', '{MC-START-INCL-3}'); +INSERT INTO cves (cve, severity, published, modified, summary, match_criteria_ids) +VALUES ('CVE-TEST-0003', 'CRITICAL', '2019-03-25', '2019-08-10', 'affects exactly 1.0.0', '{MC-EXACT-1}'); +-- two criteria on one CVE, to check the row is matched via either of them +INSERT INTO cves (cve, severity, published, modified, summary, match_criteria_ids) +VALUES ('CVE-TEST-0004', 'MEDIUM', '2022-04-05', '2022-09-15', 'affects strictly between 1.0.0 and 3.0.0', '{MC-BETWEEN-EXCL,MC-UNRELATED}'); +-- unrelated component only: must never show up for testcomp +INSERT INTO cves (cve, severity, published, modified, summary, match_criteria_ids) +VALUES ('CVE-TEST-9999', 'HIGH', '2023-05-05', '2023-10-20', 'unrelated component', '{MC-UNRELATED}'); diff --git a/pkg/models/version_range.go b/pkg/models/version_range.go new file mode 100644 index 0000000..204819c --- /dev/null +++ b/pkg/models/version_range.go @@ -0,0 +1,106 @@ +// SPDX-License-Identifier: GPL-2.0-or-later +/* + * Copyright (C) 2018-2025 SCANOSS.COM + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +// Version range matching for NVD match criteria. +// +// This used to live in SQL, comparing versions with natural_sort_order, a custom +// PostgreSQL function that SQLite has no equivalent for. The comparison happens here +// instead so the queries stay portable across both engines. +// +// naturalSortKey is a faithful port of that function rather than a semantic version +// comparison, and covers reproduces the exact boolean shape of the original SQL. That +// is deliberate: the data does not support semver ordering. 48% of the version names +// and 39.5% of the version bounds in the production database are not valid semver - +// values like "*", "-", "00.00.01a", "0.001.00.060" or buildbot branch names. Comparing +// those semantically means either dropping them or guessing, and dropping them loses +// real vulnerabilities. Measured against production data, a semver implementation +// returned fewer CVEs than the SQL it replaced on 3 of 48 sampled purl/version pairs. +// +// Note that the zero padding preserves numeric ordering, so 9.0.0 still sorts before +// 10.0.0. Where this differs from semver is pre-releases: 1.10.0-rc1 sorts *after* +// 1.10.0, because it shares its prefix and carries extra characters. A pre-release +// therefore inherits the vulnerabilities of its release, which is the behaviour the +// service has in production today. + +package models + +import ( + "strings" +) + +// nsoMaxLength is the digit padding width. The SQL passed 20 at every call site, so +// that is fixed here; the original function's guard for out-of-range widths is +// unreachable at this width and is not reproduced. +const nsoMaxLength = 20 + +// naturalSortKey ports the natural_sort_order PostgreSQL function: each run of digits +// is left-padded with zeros to nsoMaxLength so that numbers compare in numeric order, +// while every other character is copied through. Comparing two keys as plain strings +// then yields the same ordering the database produced. +func naturalSortKey(value string) string { + var result, digits strings.Builder + flushDigits := func() { + if digits.Len() == 0 { + return + } + if pad := nsoMaxLength - digits.Len(); pad > 0 { + result.WriteString(strings.Repeat("0", pad)) + } + result.WriteString(digits.String()) + digits.Reset() + } + for _, char := range value { + // A digit past nsoMaxLength is emitted as a plain character, as the original does. + if char >= '0' && char <= '9' && digits.Len() < nsoMaxLength { + digits.WriteRune(char) + continue + } + flushDigits() + result.WriteRune(char) + } + flushDigits() + return result.String() +} + +// versionBounds holds the version limits of an NVD match criterion. An empty bound +// means the range is open on that side. +type versionBounds struct { + StartIncluding string + StartExcluding string + EndIncluding string + EndExcluding string +} + +// covers reports whether the given version falls inside the bounds. It mirrors the +// boolean structure of the SQL it replaces, quirks included: an exact match against an +// inclusive bound short-circuits on its own, so it wins even when the opposite bound +// would exclude the version, and the range tests are strict comparisons because that +// equality case is already handled. +func (b versionBounds) covers(version string) bool { + if version == b.StartIncluding || version == b.EndIncluding { + return true + } + key := naturalSortKey(version) + // Lower bound: unconstrained, or past whichever start bound is set. + afterStart := (len(b.StartExcluding) == 0 && len(b.StartIncluding) == 0) || + (len(b.StartExcluding) > 0 && key > naturalSortKey(b.StartExcluding)) || + (len(b.StartIncluding) > 0 && key > naturalSortKey(b.StartIncluding)) + // Upper bound: unconstrained, or short of whichever end bound is set. + beforeEnd := (len(b.EndExcluding) == 0 && len(b.EndIncluding) == 0) || + (len(b.EndExcluding) > 0 && key < naturalSortKey(b.EndExcluding)) || + (len(b.EndIncluding) > 0 && key < naturalSortKey(b.EndIncluding)) + return afterStart && beforeEnd +} diff --git a/pkg/models/version_range_test.go b/pkg/models/version_range_test.go new file mode 100644 index 0000000..ee95276 --- /dev/null +++ b/pkg/models/version_range_test.go @@ -0,0 +1,189 @@ +// SPDX-License-Identifier: GPL-2.0-or-later +/* + * Copyright (C) 2018-2025 SCANOSS.COM + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +package models + +import "testing" + +// TestNaturalSortKeyMatchesPostgres pins naturalSortKey against the output of the +// natural_sort_order PostgreSQL function it ports. Every expected value below was +// produced by that function on the production database with max_length 20: +// +// SELECT v, natural_sort_order(v, 20) FROM (VALUES ('1.0.0'), ...) t(v); +// +// If this test fails, the port has drifted and the two engines will disagree about +// which vulnerabilities apply to a version. +func TestNaturalSortKeyMatchesPostgres(t *testing.T) { + tests := []struct{ in, want string }{ + {"1.0.0", "00000000000000000001.00000000000000000000.00000000000000000000"}, + {"9.0.0", "00000000000000000009.00000000000000000000.00000000000000000000"}, + {"10.0.0", "00000000000000000010.00000000000000000000.00000000000000000000"}, + {"1.10.0", "00000000000000000001.00000000000000000010.00000000000000000000"}, + {"1.10.0-rc1", "00000000000000000001.00000000000000000010.00000000000000000000-rc00000000000000000001"}, + {"1.2.3-alpha", "00000000000000000001.00000000000000000002.00000000000000000003-alpha"}, + {"*", "*"}, + {"-", "-"}, + {".", "."}, + {"", ""}, + {"00.00.01a", "00000000000000000000.00000000000000000000.00000000000000000001a"}, + {"0.0.0.1", "00000000000000000000.00000000000000000000.00000000000000000000.00000000000000000001"}, + {"0.001.00.060", "00000000000000000000.00000000000000000001.00000000000000000000.00000000000000000060"}, + {"v1.0.0", "v00000000000000000001.00000000000000000000.00000000000000000000"}, + {"2017a", "00000000000000002017a"}, + {"r32-p4", "r00000000000000000032-p00000000000000000004"}, + {"1.0.0.RELEASE", "00000000000000000001.00000000000000000000.00000000000000000000.RELEASE"}, + // more digits than max_length: the overflow digit is emitted as a plain character + {"123456789012345678901234", "12345678901234567890100000000000000000234"}, + {"a1b2", "a00000000000000000001b00000000000000000002"}, + {"1a2b3", "00000000000000000001a00000000000000000002b00000000000000000003"}, + } + for _, tt := range tests { + t.Run(tt.in, func(t *testing.T) { + if got := naturalSortKey(tt.in); got != tt.want { + t.Errorf("naturalSortKey(%q)\n got %q\nwant %q", tt.in, got, tt.want) + } + }) + } +} + +// TestNaturalSortKeyOrdering states the ordering properties the range matching relies on. +func TestNaturalSortKeyOrdering(t *testing.T) { + tests := []struct { + name string + lower string + higher string + whyItRuns string + }{ + { + name: "zero padding keeps numeric order", lower: "9.0.0", higher: "10.0.0", + whyItRuns: "a plain string sort would put 10.0.0 first", + }, + { + name: "minor versions order numerically", lower: "1.9.0", higher: "1.10.0", + whyItRuns: "same reason, one level down", + }, + { + name: "a pre-release sorts after its release", lower: "1.10.0", higher: "1.10.0-rc1", + whyItRuns: "opposite of semver, and the reason a pre-release inherits its release's CVEs", + }, + { + name: "patch beats minor", lower: "1.0.0", higher: "1.0.1", + whyItRuns: "ordinary case", + }, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + lo, hi := naturalSortKey(tt.lower), naturalSortKey(tt.higher) + if !(lo < hi) { + t.Errorf("expected %q < %q (%s)\n lower key %q\nhigher key %q", + tt.lower, tt.higher, tt.whyItRuns, lo, hi) + } + }) + } +} + +func TestVersionBoundsCovers(t *testing.T) { + tests := []struct { + name string + bounds versionBounds + // version -> whether the bounds should cover it + cases map[string]bool + }{ + { + name: "no bounds covers everything", + bounds: versionBounds{}, + cases: map[string]bool{"1.0.0": true, "99.0.0": true, "not-a-version": true, "*": true}, + }, + { + name: "end including is inclusive", + bounds: versionBounds{EndIncluding: "2.0.0"}, + cases: map[string]bool{"1.0.0": true, "2.0.0": true, "2.0.1": false, "3.0.0": false}, + }, + { + name: "end excluding is exclusive", + bounds: versionBounds{EndExcluding: "2.0.0"}, + cases: map[string]bool{"1.9.9": true, "2.0.0": false, "3.0.0": false}, + }, + { + name: "start including is inclusive", + bounds: versionBounds{StartIncluding: "2.0.0"}, + cases: map[string]bool{"1.9.9": false, "2.0.0": true, "2.0.1": true}, + }, + { + name: "start excluding is exclusive", + bounds: versionBounds{StartExcluding: "2.0.0"}, + cases: map[string]bool{"1.9.9": false, "2.0.0": false, "2.0.1": true}, + }, + { + name: "closed inclusive range", + bounds: versionBounds{StartIncluding: "1.0.0", EndIncluding: "2.0.0"}, + cases: map[string]bool{"0.9.9": false, "1.0.0": true, "1.5.0": true, "2.0.0": true, "2.0.1": false}, + }, + { + name: "closed exclusive range", + bounds: versionBounds{StartExcluding: "1.0.0", EndExcluding: "3.0.0"}, + cases: map[string]bool{"1.0.0": false, "2.0.0": true, "3.0.0": false}, + }, + { + name: "single version range", + bounds: versionBounds{StartIncluding: "1.0.0", EndIncluding: "1.0.0"}, + cases: map[string]bool{"1.0.0": true, "1.0.1": false, "0.9.9": false}, + }, + { + name: "numeric ordering, not string ordering", + bounds: versionBounds{EndIncluding: "10.0.0"}, + // a plain string sort would place 9.0.0 after 10.0.0 and wrongly exclude it + cases: map[string]bool{"9.0.0": true, "10.0.0": true, "11.0.0": false}, + }, + { + name: "a pre-release is covered by a range ending at its release", + // natural sort places 1.10.0-rc1 after 1.10.0, so the rc inherits the CVEs of + // its release. This is what production does today; semver would exclude it. + bounds: versionBounds{StartIncluding: "1.10.0"}, + cases: map[string]bool{"1.10.0-rc1": true, "1.10.0": true, "1.9.0": false}, + }, + { + name: "versions that are not semver still compare", + // 48% of production version names are not valid semver. Dropping them would + // lose real vulnerabilities, so they are compared as natural sort keys. + bounds: versionBounds{StartIncluding: "0.0.0", EndIncluding: "1.0.0"}, + cases: map[string]bool{"00.00.01a": true, "0.0.0.1": true, "0.001.00.060": true}, + }, + { + name: "placeholder versions still fall in range", + bounds: versionBounds{EndIncluding: "2.0.0"}, + // '*' and '-' are left untouched by the key, and both sort below '0', so they + // land inside an upper-bounded range. Production relies on this: dropping + // them instead cost 24 CVEs across two sampled components. + cases: map[string]bool{"*": true, "-": true}, + }, + { + name: "an exact match on an inclusive bound wins over the opposite bound", + // mirrors the SQL: the equality check short-circuits before the range tests + bounds: versionBounds{StartIncluding: "5.0.0", EndExcluding: "1.0.0"}, + cases: map[string]bool{"5.0.0": true}, + }, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + for version, want := range tt.cases { + if got := tt.bounds.covers(version); got != want { + t.Errorf("versionBounds%+v.covers(%q) = %v, want %v", tt.bounds, version, got, want) + } + } + }) + } +} diff --git a/pkg/models/versions.go b/pkg/models/versions.go index fc92a49..8682f44 100644 --- a/pkg/models/versions.go +++ b/pkg/models/versions.go @@ -57,8 +57,10 @@ func (m *VersionModel) GetVersionByName(ctx context.Context, name string, create return Version{}, errors.New("please specify a valid Version Name to query") } var version Version + // COALESCE on id because the schema does not generate one: versions.id has no + // autoincrement, so a row written by saveVersion below has a NULL id. err := m.db.QueryRowxContext(ctx, - "SELECT id, version_name, semver FROM versions"+ + "SELECT COALESCE(id, 0) AS id, version_name, semver FROM versions"+ " WHERE version_name = $1", name).StructScan(&version) if err != nil && !errors.Is(err, sql.ErrNoRows) { @@ -80,10 +82,13 @@ func (m *VersionModel) saveVersion(ctx context.Context, name string) (Version, e } zlog.S.Debugf("Attempting to save '%v' to the versions table...", name) var version Version + // The row is written without an id: the schema declares versions.id as a plain + // column with no autoincrement, so there is nothing to generate one. No caller + // reaches this path today, and none reads the returned ID. err := m.db.QueryRowxContext(ctx, "INSERT INTO versions (version_name, semver) VALUES($1, $2)"+ - " RETURNING id, version_name, semver", - name, "", false, false, + " RETURNING COALESCE(id, 0) AS id, version_name, semver", + name, "", ).StructScan(&version) if err != nil { zlog.S.Errorf("Error: Failed to insert new version name into versions table for %v: %v", name, err) diff --git a/pkg/models/versions_test.go b/pkg/models/versions_test.go index 6cdcab7..78590c3 100644 --- a/pkg/models/versions_test.go +++ b/pkg/models/versions_test.go @@ -33,12 +33,12 @@ func TestVersionsSearch(t *testing.T) { t.Fatalf("an error '%s' was not expected when opening a sugared logger", err) } defer zlog.SyncZap() - db, err := sqlx.Connect("sqlite3", ":memory:") + db, err := sqlx.Connect("sqlite", ":memory:") if err != nil { t.Fatalf("an error '%s' was not expected when opening a stub database connection", err) } defer CloseDB(db) - err = loadTestSQLDataFiles(db, ctx, nil, []string{"../models/tests/versions.sql"}) + err = loadTestSQLDataFilesWithSchema(db, ctx, nil, []string{"../models/tests/versions.sql"}) if err != nil { t.Fatalf("failed to load SQL test data: %v", err) } @@ -101,7 +101,7 @@ func TestVersionsSearchBadSql(t *testing.T) { t.Fatalf("an error '%s' was not expected when opening a sugared logger", err) } defer zlog.SyncZap() - db, err := sqlx.Connect("sqlite3", ":memory:") + db, err := sqlx.Connect("sqlite", ":memory:") if err != nil { t.Fatalf("an error '%s' was not expected when opening a stub database connection", err) } diff --git a/pkg/models/vulns_purl.go b/pkg/models/vulns_purl.go index e24ec14..df85d5e 100644 --- a/pkg/models/vulns_purl.go +++ b/pkg/models/vulns_purl.go @@ -71,82 +71,113 @@ func (m *VulnsForPurlModel) GetVulnsByPurl(ctx context.Context, purl string, ver return m.GetVulnsByPurlName(ctx, purlName) } +// vulnsForPurlQuery returns every CVE reachable from a purl, paired with the version +// bounds of the match criterion that connects the two. The path through the schema is +// purl -> short_cpe_purl.cpe_id -> nvd_match_criteria_ids.short_cpe_id -> +// match_criteria_id -> cves.match_criteria_ids. +// +// cves.match_criteria_ids holds a delimited list of criteria ids, so the last join +// has to test for membership textually. The CAST keeps that working whether the column +// is TEXT (SQLite) or an array (PostgreSQL), and COALESCE guards the nullable columns. +// +// Version filtering is deliberately absent here; it happens in Go, see version_range.go. +const vulnsForPurlQuery = `SELECT DISTINCT + c.cve, + COALESCE(c.severity, '') AS severity, + c.published, + c.modified, + COALESCE(c.summary, '') AS summary, + COALESCE(nmci.version_start_including, '') AS version_start_including, + COALESCE(nmci.version_start_excluding, '') AS version_start_excluding, + COALESCE(nmci.version_end_including, '') AS version_end_including, + COALESCE(nmci.version_end_excluding, '') AS version_end_excluding +FROM short_cpe_purl scp +INNER JOIN nvd_match_criteria_ids nmci ON nmci.short_cpe_id = scp.cpe_id +INNER JOIN cves c ON CAST(c.match_criteria_ids AS TEXT) LIKE '%' || nmci.match_criteria_id || '%' +WHERE scp.purl = $1 +ORDER BY c.cve` + +// vulnRow is a single (CVE, match criterion) pair returned by vulnsForPurlQuery. One +// CVE can appear more than once, via different criteria. +type vulnRow struct { + VulnsForPurl + StartIncluding string `db:"version_start_including"` + StartExcluding string `db:"version_start_excluding"` + EndIncluding string `db:"version_end_including"` + EndExcluding string `db:"version_end_excluding"` +} + +// bounds returns the version limits carried by this row. +func (r vulnRow) bounds() versionBounds { + return versionBounds{ + StartIncluding: r.StartIncluding, + StartExcluding: r.StartExcluding, + EndIncluding: r.EndIncluding, + EndExcluding: r.EndExcluding, + } +} + +// queryVulnRows runs the shared query for the given purl name. +func (m *VulnsForPurlModel) queryVulnRows(ctx context.Context, purlName string) ([]vulnRow, error) { + var rows []vulnRow + err := m.db.SelectContext(ctx, &rows, vulnsForPurlQuery, strings.TrimSpace(purlName)) + if err != nil { + zlog.S.Errorf("Failed to query short_cpe for %s: %v", purlName, err) + return nil, fmt.Errorf("failed to query the table: %v", err) + } + return rows, nil +} + +// collapseByCve reduces the rows to one entry per CVE, keeping only those whose match +// criterion satisfies keep. A nil keep accepts every row. Query order is preserved. +func collapseByCve(rows []vulnRow, keep func(versionBounds) bool) []VulnsForPurl { + vulns := make([]VulnsForPurl, 0, len(rows)) + seen := make(map[string]bool, len(rows)) + for _, row := range rows { + if keep != nil && !keep(row.bounds()) { + continue + } + if seen[row.Cve] { + continue + } + seen[row.Cve] = true + vulns = append(vulns, row.VulnsForPurl) + } + return vulns +} + // GetVulnsByPurlName searches for component details of the specified Purl Name/Type (and optional requirement). func (m *VulnsForPurlModel) GetVulnsByPurlName(ctx context.Context, purlName string) ([]VulnsForPurl, error) { if len(purlName) == 0 { zlog.S.Errorf("Please specify a valid Purl Name to query") return []VulnsForPurl{}, errors.New("please specify a valid Purl Name to query") } - - var vulns []VulnsForPurl - purlName = strings.TrimSpace(purlName) - err := m.db.SelectContext(ctx, &vulns, - "SELECT c2.cve, c2.severity, c2.published, c2.modified, c2.summary "+ - "FROM short_cpe_purl scp "+ - "INNER JOIN cpes c ON scp.cpe_id = c.id "+ - "INNER JOIN nvd_match_criteria_ids nmci ON trim(CAST(nmci.cpe_ids AS TEXT), '{}') LIKE '%' || scp.cpe_id || '%' "+ - "INNER JOIN cves c2 ON trim(CAST(nmci.cpe_ids AS TEXT), '{}') LIKE '%' || nmci.match_criteria_id || '%' "+ - "WHERE "+ - "scp.purl = $1", - purlName) - + rows, err := m.queryVulnRows(ctx, purlName) if err != nil { - zlog.S.Errorf("Failed to query short_cpe for %s: %v", purlName, err) - return []VulnsForPurl{}, fmt.Errorf("failed to query the table: %v", err) + return []VulnsForPurl{}, err } + vulns := collapseByCve(rows, nil) zlog.S.Debugf("Found %v results for %v.", len(vulns), purlName) return vulns, nil } +// GetVulnsByPurlVersion searches for the vulnerabilities of the specified Purl Name/Type +// that apply to a given version. An empty version matches only the criteria that place +// no bound on the version at all. func (m *VulnsForPurlModel) GetVulnsByPurlVersion(ctx context.Context, purlName string, purlVersion string) ([]VulnsForPurl, error) { if len(purlName) == 0 { zlog.S.Errorf("Please specify a valid Purl Name to query") return []VulnsForPurl{}, errors.New("please specify a valid Purl Name to query") } - - var vulns []VulnsForPurl - purlName = strings.TrimSpace(purlName) - query := `WITH matching_criteria AS ( - SELECT array_agg(nmci.match_criteria_id) as criteria_ids - FROM short_cpe_purl scp - INNER JOIN short_cpes sc ON sc.id = scp.cpe_id - INNER JOIN nvd_match_criteria_ids nmci ON nmci.short_cpe_id = sc.id - WHERE scp.purl = $1 - AND ( - $2 = nmci.version_start_including - OR $2 = nmci.version_end_including - OR ( - ( - (nmci.version_start_excluding = '' AND nmci.version_start_including = '') - OR (nmci.version_start_excluding != '' AND natural_sort_order($2, 20) > natural_sort_order(nmci.version_start_excluding, 20)) - OR (nmci.version_start_including != '' AND natural_sort_order($2, 20) > natural_sort_order(nmci.version_start_including, 20)) - ) - AND ( - (nmci.version_end_excluding = '' AND nmci.version_end_including = '') - OR (nmci.version_end_excluding != '' AND natural_sort_order($2, 20) < natural_sort_order(nmci.version_end_excluding, 20)) - OR (nmci.version_end_including != '' AND natural_sort_order($2, 20) < natural_sort_order(nmci.version_end_including, 20)) - ) - ) - ) - ) - SELECT DISTINCT - c2.cve, - c2.severity, - c2.published, - c2.modified, - c2.summary - FROM cves c2, matching_criteria mc - WHERE c2.match_criteria_ids && mc.criteria_ids - ORDER BY c2.cve, c2.severity, c2.published, c2.modified, c2.summary;` - - err := m.db.SelectContext(ctx, &vulns, query, purlName, purlVersion) - + rows, err := m.queryVulnRows(ctx, purlName) if err != nil { - zlog.S.Errorf("Failed to query short_cpe for %s: %v", purlName, err) - return []VulnsForPurl{}, fmt.Errorf("failed to query the table: %v", err) + return []VulnsForPurl{}, err } + vulns := collapseByCve(rows, func(b versionBounds) bool { + return b.covers(purlVersion) + }) + zlog.S.Debugf("Found %v results for %v (version %v).", len(vulns), purlName, purlVersion) - zlog.S.Debugf("Found %v results for %v.", len(vulns), purlName) return vulns, nil } diff --git a/pkg/models/vulns_purl_scenario_test.go b/pkg/models/vulns_purl_scenario_test.go new file mode 100644 index 0000000..8a9a72c --- /dev/null +++ b/pkg/models/vulns_purl_scenario_test.go @@ -0,0 +1,226 @@ +// SPDX-License-Identifier: GPL-2.0-or-later +/* + * Copyright (C) 2018-2025 SCANOSS.COM + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +// Tests that exercise the vulnerability queries against real data, on the production +// schema. The pre-existing tests in vulns_purl_test.go only cover the +// error paths (empty purl, closed connection), which is why a query referencing +// columns that do not exist could pass CI. + +package models + +import ( + "context" + "sort" + "testing" + "time" + + "github.com/jmoiron/sqlx" + zlog "github.com/scanoss/zap-logging-helper/pkg/logger" + _ "modernc.org/sqlite" + "scanoss.com/vulnerabilities/pkg/utils" +) + +const scenarioPurl = "pkg:github/scanoss/testcomp" + +// newScenarioDB returns a DB loaded with the production schema and all test fixtures. +func newScenarioDB(t *testing.T) (*sqlx.DB, context.Context) { + t.Helper() + if err := zlog.NewSugaredDevLogger(); err != nil { + t.Fatalf("failed to open a sugared logger: %v", err) + } + t.Cleanup(zlog.SyncZap) + ctx := context.Background() + db, err := sqlx.Connect("sqlite", ":memory:") + if err != nil { + t.Fatalf("failed to open a stub database connection: %v", err) + } + db.SetMaxOpenConns(1) + t.Cleanup(func() { CloseDB(db) }) + if err = LoadTestSQLData(db, ctx, nil); err != nil { + t.Fatalf("failed to load SQL test data: %v", err) + } + return db, ctx +} + +func timeOf(d utils.OnlyDate) time.Time { + return time.Time(d) +} + +func cveNames(vulns []VulnsForPurl) []string { + out := make([]string, 0, len(vulns)) + for _, v := range vulns { + out = append(out, v.Cve) + } + sort.Strings(out) + return out +} + +func equalStrings(a, b []string) bool { + if len(a) != len(b) { + return false + } + for i := range a { + if a[i] != b[i] { + return false + } + } + return true +} + +// TestGetVulnsByPurlNameWithData checks every CVE reachable from a purl is returned, +// and that criteria belonging to other components are not. +func TestGetVulnsByPurlNameWithData(t *testing.T) { + db, ctx := newScenarioDB(t) + model := NewVulnsForPurlModel(db) + + vulns, err := model.GetVulnsByPurlName(ctx, scenarioPurl) + if err != nil { + t.Fatalf("GetVulnsByPurlName() unexpected error: %v", err) + } + want := []string{"CVE-TEST-0001", "CVE-TEST-0002", "CVE-TEST-0003", "CVE-TEST-0004"} + if got := cveNames(vulns); !equalStrings(got, want) { + t.Errorf("GetVulnsByPurlName() = %v, want %v", got, want) + } + for _, v := range vulns { + if v.Cve == "CVE-TEST-9999" { + t.Errorf("GetVulnsByPurlName() returned a CVE from an unrelated component") + } + } +} + +// TestGetVulnsByPurlNameFieldsPopulated guards the scan of every selected column. +// cves.published and cves.modified are TEXT in the schema, so this is what +// catches utils.OnlyDate not implementing sql.Scanner. +func TestGetVulnsByPurlNameFieldsPopulated(t *testing.T) { + db, ctx := newScenarioDB(t) + model := NewVulnsForPurlModel(db) + + vulns, err := model.GetVulnsByPurlName(ctx, scenarioPurl) + if err != nil { + t.Fatalf("GetVulnsByPurlName() unexpected error: %v", err) + } + var found bool + for _, v := range vulns { + if v.Cve != "CVE-TEST-0003" { + continue + } + found = true + if v.Severity != "CRITICAL" { + t.Errorf("Severity = %q, want %q", v.Severity, "CRITICAL") + } + if v.Summary != "affects exactly 1.0.0" { + t.Errorf("Summary = %q, want %q", v.Summary, "affects exactly 1.0.0") + } + if got := utils.ParseTime("2019-03-25"); !got.Equal(timeOf(v.Published)) { + t.Errorf("Published = %v, want %v", timeOf(v.Published), got) + } + if got := utils.ParseTime("2019-08-10"); !got.Equal(timeOf(v.Modified)) { + t.Errorf("Modified = %v, want %v", timeOf(v.Modified), got) + } + } + if !found { + t.Errorf("CVE-TEST-0003 not returned by GetVulnsByPurlName()") + } +} + +// TestGetVulnsByPurlVersionWithData checks the version-bound filtering at its edges: +// inclusive and exclusive, upper and lower. +func TestGetVulnsByPurlVersionWithData(t *testing.T) { + db, ctx := newScenarioDB(t) + model := NewVulnsForPurlModel(db) + + tests := []struct { + version string + want []string + reason string + }{ + { + version: "1.0.0", + want: []string{"CVE-TEST-0001", "CVE-TEST-0003"}, + reason: "end_including 2.0.0 and the exact 1.0.0 match; start_excluding 1.0.0 must not", + }, + { + version: "2.0.0", + want: []string{"CVE-TEST-0001", "CVE-TEST-0004"}, + reason: "end_including 2.0.0 is inclusive, and 2.0.0 sits strictly between 1.0.0 and 3.0.0", + }, + { + version: "3.0.0", + want: []string{"CVE-TEST-0002"}, + reason: "start_including 3.0.0 matches; end_excluding 3.0.0 must not", + }, + { + version: "9.9.9", + want: []string{"CVE-TEST-0002"}, + reason: "only the open-ended start_including 3.0.0 range applies", + }, + } + for _, tt := range tests { + t.Run(tt.version, func(t *testing.T) { + vulns, err := model.GetVulnsByPurlVersion(ctx, scenarioPurl, tt.version) + if err != nil { + t.Fatalf("GetVulnsByPurlVersion(%q) unexpected error: %v", tt.version, err) + } + if got := cveNames(vulns); !equalStrings(got, tt.want) { + t.Errorf("GetVulnsByPurlVersion(%q) = %v, want %v (%s)", + tt.version, got, tt.want, tt.reason) + } + }) + } +} + +// TestGetVulnsByPurlDispatch checks GetVulnsByPurl routes to the name or the version +// variant according to the version argument. +func TestGetVulnsByPurlDispatch(t *testing.T) { + db, ctx := newScenarioDB(t) + model := NewVulnsForPurlModel(db) + + withVersion, err := model.GetVulnsByPurl(ctx, scenarioPurl, "1.0.0") + if err != nil { + t.Fatalf("GetVulnsByPurl() with version, unexpected error: %v", err) + } + want := []string{"CVE-TEST-0001", "CVE-TEST-0003"} + if got := cveNames(withVersion); !equalStrings(got, want) { + t.Errorf("GetVulnsByPurl() with version = %v, want %v", got, want) + } + + noVersion, err := model.GetVulnsByPurl(ctx, scenarioPurl, "") + if err != nil { + t.Fatalf("GetVulnsByPurl() without version, unexpected error: %v", err) + } + if len(noVersion) <= len(withVersion) { + t.Errorf("GetVulnsByPurl() without version returned %d CVEs, expected more than the %d for a single version", + len(noVersion), len(withVersion)) + } +} + +// TestGetVulnsByPurlIgnoresEmbeddedVersion pins current behaviour: a version inside the +// purl string is stripped, not used to filter. Callers pass the version separately, as +// the local use case does. +func TestGetVulnsByPurlIgnoresEmbeddedVersion(t *testing.T) { + db, ctx := newScenarioDB(t) + model := NewVulnsForPurlModel(db) + + got, err := model.GetVulnsByPurl(ctx, scenarioPurl+"@1.0.0", "") + if err != nil { + t.Fatalf("GetVulnsByPurl() unexpected error: %v", err) + } + want := []string{"CVE-TEST-0001", "CVE-TEST-0002", "CVE-TEST-0003", "CVE-TEST-0004"} + if names := cveNames(got); !equalStrings(names, want) { + t.Errorf("GetVulnsByPurl(%q, \"\") = %v, want every CVE for the component %v", + scenarioPurl+"@1.0.0", names, want) + } +} diff --git a/pkg/models/vulns_purl_test.go b/pkg/models/vulns_purl_test.go index 2fa548a..45db419 100644 --- a/pkg/models/vulns_purl_test.go +++ b/pkg/models/vulns_purl_test.go @@ -33,7 +33,7 @@ func TestGetVulnsByPurl(t *testing.T) { t.Fatalf("an error '%s' was not expected when opening a sugared logger", err) } defer zlog.SyncZap() - db, err := sqlx.Connect("sqlite3", ":memory:") + db, err := sqlx.Connect("sqlite", ":memory:") if err != nil { t.Fatalf("an error '%s' was not expected when opening a stub database connection", err) } @@ -96,7 +96,7 @@ func TestGetVulnsByPurlName(t *testing.T) { t.Fatalf("an error '%s' was not expected when opening a sugared logger", err) } defer zlog.SyncZap() - db, err := sqlx.Connect("sqlite3", ":memory:") + db, err := sqlx.Connect("sqlite", ":memory:") if err != nil { t.Fatalf("an error '%s' was not expected when opening a stub database connection", err) } @@ -122,7 +122,7 @@ func TestGetVulnsByPurlVersion(t *testing.T) { t.Fatalf("an error '%s' was not expected when opening a sugared logger", err) } defer zlog.SyncZap() - db, err := sqlx.Connect("sqlite3", ":memory:") + db, err := sqlx.Connect("sqlite", ":memory:") if err != nil { t.Fatalf("an error '%s' was not expected when opening a stub database connection", err) } @@ -146,9 +146,13 @@ func TestGetVulnsByPurlVersion(t *testing.T) { t.Errorf("Error was expected because purl is empty in cpeModel.GetVulnsByPurlVersion()") } + // The model queries through the pool, so the DB itself has to be closed to make the + // query fail. Closing conn only returns it to the pool; this assertion used to pass + // for the wrong reason, on a query SQLite could not even parse. CloseConn(conn) + CloseDB(db) _, err = cpeModel.GetVulnsByPurlVersion(ctx, "pkg:github/hapijs/call", "1.0.0") if err == nil { - t.Errorf("Error was expected because purl is empty in cpeModel.GetVulnsByPurlVersion()") + t.Errorf("Error was expected because the DB is closed in cpeModel.GetVulnsByPurlVersion()") } } diff --git a/pkg/service/vulnerability_service_test.go b/pkg/service/vulnerability_service_test.go index ec31602..ad5e451 100644 --- a/pkg/service/vulnerability_service_test.go +++ b/pkg/service/vulnerability_service_test.go @@ -23,10 +23,10 @@ import ( "testing" "github.com/jmoiron/sqlx" - _ "github.com/mattn/go-sqlite3" common "github.com/scanoss/papi/api/commonv2" pb "github.com/scanoss/papi/api/vulnerabilitiesv2" zlog "github.com/scanoss/zap-logging-helper/pkg/logger" + _ "modernc.org/sqlite" myconfig "scanoss.com/vulnerabilities/pkg/config" "scanoss.com/vulnerabilities/pkg/models" ) @@ -38,7 +38,7 @@ func TestVulnerabilityServer_Echo(t *testing.T) { t.Fatalf("an error '%s' was not expected when opening a sugared logger", err) } defer zlog.SyncZap() - db, err := sqlx.Connect("sqlite3", ":memory:") + db, err := sqlx.Connect("sqlite", ":memory:") if err != nil { t.Fatalf("an error '%s' was not expected when opening a stub database connection", err) } @@ -91,7 +91,7 @@ func TestVulnerabilityServer_GetCpe(t *testing.T) { t.Fatalf("an error '%s' was not expected when opening a sugared logger", err) } defer zlog.SyncZap() - db, err := sqlx.Connect("sqlite3", "file::memory:?cache=shared") + db, err := sqlx.Connect("sqlite", "file::memory:?cache=shared") if err != nil { t.Fatalf("an error '%s' was not expected when opening a stub database connection", err) } @@ -194,7 +194,7 @@ func TestVulnerabilityServer_GetComponentCpe(t *testing.T) { t.Fatalf("an error '%s' was not expected when opening a sugared logger", err) } defer zlog.SyncZap() - db, err := sqlx.Connect("sqlite3", "file::memory:?cache=shared") + db, err := sqlx.Connect("sqlite", "file::memory:?cache=shared") if err != nil { t.Fatalf("an error '%s' was not expected when opening a stub database connection", err) } @@ -274,7 +274,7 @@ func TestVulnerabilityServer_GetComponentsCpes(t *testing.T) { t.Fatalf("an error '%s' was not expected when opening a sugared logger", err) } defer zlog.SyncZap() - db, err := sqlx.Connect("sqlite3", "file::memory:?cache=shared") + db, err := sqlx.Connect("sqlite", "file::memory:?cache=shared") if err != nil { t.Fatalf("an error '%s' was not expected when opening a stub database connection", err) } @@ -399,7 +399,7 @@ func TestVulnerabilityServer_GetComponentsVulnerabilities(t *testing.T) { t.Fatalf("an error '%s' was not expected when opening a sugared logger", err) } defer zlog.SyncZap() - db, err := sqlx.Connect("sqlite3", "file::memory:?cache=shared") + db, err := sqlx.Connect("sqlite", "file::memory:?cache=shared") if err != nil { t.Fatalf("an error '%s' was not expected when opening a stub database connection", err) } @@ -520,7 +520,7 @@ func TestVulnerabilityServer_GetComponentVulnerabilities(t *testing.T) { t.Fatalf("an error '%s' was not expected when opening a sugared logger", err) } defer zlog.SyncZap() - db, err := sqlx.Connect("sqlite3", "file::memory:?cache=shared") + db, err := sqlx.Connect("sqlite", "file::memory:?cache=shared") if err != nil { t.Fatalf("an error '%s' was not expected when opening a stub database connection", err) } @@ -601,7 +601,7 @@ func TestVulnerabilityServer_GetVulnerabilities(t *testing.T) { t.Fatalf("an error '%s' was not expected when opening a sugared logger", err) } defer zlog.SyncZap() - db, err := sqlx.Connect("sqlite3", "file::memory:?cache=shared") + db, err := sqlx.Connect("sqlite", "file::memory:?cache=shared") if err != nil { t.Fatalf("an error '%s' was not expected when opening a stub database connection", err) } @@ -704,7 +704,7 @@ func TestVulnerabilityServer_GetVulnerabilities(t *testing.T) { } // Test DB connection error path - use a separate DB instance - dbClosed, err := sqlx.Connect("sqlite3", "file::memory:?cache=shared") + dbClosed, err := sqlx.Connect("sqlite", "file::memory:?cache=shared") if err != nil { t.Fatalf("an error '%s' was not expected when opening a stub database connection", err) } @@ -723,7 +723,7 @@ func TestVulnerabilityServer_CloseDBConnection(t *testing.T) { t.Fatalf("an error '%s' was not expected when opening a sugared logger", err) } defer zlog.SyncZap() - db, err := sqlx.Connect("sqlite3", "file::memory:?cache=shared") + db, err := sqlx.Connect("sqlite", "file::memory:?cache=shared") if err != nil { t.Fatalf("an error '%s' was not expected when opening a stub database connection", err) } diff --git a/pkg/usecase/cpe_test.go b/pkg/usecase/cpe_test.go index b5b861f..2fff378 100644 --- a/pkg/usecase/cpe_test.go +++ b/pkg/usecase/cpe_test.go @@ -26,8 +26,8 @@ import ( "github.com/grpc-ecosystem/go-grpc-middleware/logging/zap/ctxzap" "github.com/jmoiron/sqlx" - _ "github.com/mattn/go-sqlite3" zlog "github.com/scanoss/zap-logging-helper/pkg/logger" + _ "modernc.org/sqlite" myconfig "scanoss.com/vulnerabilities/pkg/config" "scanoss.com/vulnerabilities/pkg/models" ) @@ -40,7 +40,7 @@ func TestGetCpeUseCase(t *testing.T) { defer zlog.SyncZap() ctx := ctxzap.ToContext(context.Background(), zlog.L) s := ctxzap.Extract(ctx).Sugar() - db, err := sqlx.Connect("sqlite3", ":memory:") + db, err := sqlx.Connect("sqlite", ":memory:") if err != nil { t.Fatalf("an error '%s' was not expected when opening a stub database connection", err) } diff --git a/pkg/usecase/local_use_case_scenario_test.go b/pkg/usecase/local_use_case_scenario_test.go new file mode 100644 index 0000000..d3b5edc --- /dev/null +++ b/pkg/usecase/local_use_case_scenario_test.go @@ -0,0 +1,156 @@ +// SPDX-License-Identifier: GPL-2.0-or-later +/* + * Copyright (C) 2018-2025 SCANOSS.COM + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +// End-to-end coverage for the local use case, asserting on the vulnerabilities it +// returns rather than only on the absence of an error. +// +// vulnerabilityWorker swallows query failures: it logs the error and emits the +// component with no vulnerabilities attached (local_use_case.go). That means a +// completely broken SQL query still produces a successful, empty response, and the +// pre-existing TestGetVulnerabilityUseCase cannot tell the difference because it makes +// no assertions on the result. + +package usecase + +import ( + "context" + "testing" + + "github.com/grpc-ecosystem/go-grpc-middleware/logging/zap/ctxzap" + "github.com/jmoiron/sqlx" + "github.com/scanoss/go-component-helper/componenthelper" + zlog "github.com/scanoss/zap-logging-helper/pkg/logger" + _ "modernc.org/sqlite" + "scanoss.com/vulnerabilities/pkg/config" + "scanoss.com/vulnerabilities/pkg/models" +) + +const scenarioPurl = "pkg:github/scanoss/testcomp" + +func newScenarioUseCase(t *testing.T) (*LocalVulnerabilityUseCase, context.Context) { + t.Helper() + if err := zlog.NewSugaredDevLogger(); err != nil { + t.Fatalf("failed to open a sugared logger: %v", err) + } + t.Cleanup(zlog.SyncZap) + ctx := ctxzap.ToContext(context.Background(), zlog.L) + s := ctxzap.Extract(ctx).Sugar() + db, err := sqlx.Connect("sqlite", ":memory:") + if err != nil { + t.Fatalf("failed to open a stub database connection: %v", err) + } + t.Cleanup(func() { models.CloseDB(db) }) + if err = models.LoadTestSQLData(db, ctx, nil); err != nil { + t.Fatalf("failed to load test data: %v", err) + } + serverConfig, err := config.NewServerConfig(nil) + if err != nil { + t.Fatalf("failed to load config: %v", err) + } + return NewLocalVulnerabilitiesUseCase(ctx, s, serverConfig, db), ctx +} + +// TestGetVulnerabilitiesReturnsResults checks vulnerabilities actually reach the +// use case output, for a component with and without a version. +func TestGetVulnerabilitiesReturnsResults(t *testing.T) { + tests := []struct { + name string + version string + wantCves []string + }{ + { + name: "no version returns every CVE for the component", + version: "", + wantCves: []string{"CVE-TEST-0001", "CVE-TEST-0002", "CVE-TEST-0003", "CVE-TEST-0004"}, + }, + { + name: "version 1.0.0 returns only the CVEs whose range covers it", + version: "1.0.0", + wantCves: []string{"CVE-TEST-0001", "CVE-TEST-0003"}, + }, + { + name: "a v prefix on the version is trimmed before querying", + version: "v1.0.0", + wantCves: []string{"CVE-TEST-0001", "CVE-TEST-0003"}, + }, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + vulnUc, ctx := newScenarioUseCase(t) + components := []componenthelper.Component{ + {Purl: scenarioPurl, Version: tt.version}, + } + out, err := vulnUc.GetVulnerabilities(ctx, components) + if err != nil { + t.Fatalf("GetVulnerabilities() unexpected error: %v", err) + } + if len(out.Components) != 1 { + t.Fatalf("GetVulnerabilities() returned %d components, want 1", len(out.Components)) + } + got := make(map[string]bool) + for _, v := range out.Components[0].Vulnerabilities { + got[v.Cve] = true + } + if len(got) != len(tt.wantCves) { + t.Errorf("GetVulnerabilities() returned %d CVEs (%v), want %d (%v)", + len(got), got, len(tt.wantCves), tt.wantCves) + } + for _, want := range tt.wantCves { + if !got[want] { + t.Errorf("GetVulnerabilities() missing expected CVE %v, got %v", want, got) + } + } + }) + } +} + +// TestGetVulnerabilitiesPopulatesFields guards the fields carried through to the +// output, including the dates that come out of TEXT columns. +func TestGetVulnerabilitiesPopulatesFields(t *testing.T) { + vulnUc, ctx := newScenarioUseCase(t) + out, err := vulnUc.GetVulnerabilities(ctx, []componenthelper.Component{ + {Purl: scenarioPurl, Version: "1.0.0"}, + }) + if err != nil { + t.Fatalf("GetVulnerabilities() unexpected error: %v", err) + } + if len(out.Components) != 1 { + t.Fatalf("GetVulnerabilities() returned %d components, want 1", len(out.Components)) + } + var found bool + for _, v := range out.Components[0].Vulnerabilities { + if v.Cve != "CVE-TEST-0003" { + continue + } + found = true + if v.Severity != "CRITICAL" { + t.Errorf("Severity = %q, want %q", v.Severity, "CRITICAL") + } + if v.Source != "NVD" { + t.Errorf("Source = %q, want %q", v.Source, "NVD") + } + wantURL := "https://nvd.nist.gov/vuln/detail/CVE-TEST-0003" + if v.URL != wantURL { + t.Errorf("URL = %q, want %q", v.URL, wantURL) + } + if v.Summary != "affects exactly 1.0.0" { + t.Errorf("Summary = %q, want %q", v.Summary, "affects exactly 1.0.0") + } + } + if !found { + t.Errorf("CVE-TEST-0003 missing from the use case output") + } +} diff --git a/pkg/usecase/local_use_case_test.go b/pkg/usecase/local_use_case_test.go index 44fc166..7615ee1 100644 --- a/pkg/usecase/local_use_case_test.go +++ b/pkg/usecase/local_use_case_test.go @@ -28,8 +28,8 @@ import ( "github.com/grpc-ecosystem/go-grpc-middleware/logging/zap/ctxzap" "github.com/jmoiron/sqlx" - _ "github.com/mattn/go-sqlite3" zlog "github.com/scanoss/zap-logging-helper/pkg/logger" + _ "modernc.org/sqlite" "scanoss.com/vulnerabilities/pkg/models" ) @@ -41,7 +41,7 @@ func TestGetVulnerabilityUseCase(t *testing.T) { defer zlog.SyncZap() ctx := ctxzap.ToContext(context.Background(), zlog.L) s := ctxzap.Extract(ctx).Sugar() - db, err := sqlx.Connect("sqlite3", ":memory:") + db, err := sqlx.Connect("sqlite", ":memory:") if err != nil { t.Fatalf("an error '%s' was not expected when opening a stub database connection", err) } diff --git a/pkg/usecase/vulnerability_use_case_test.go b/pkg/usecase/vulnerability_use_case_test.go index aba3b54..c76b649 100644 --- a/pkg/usecase/vulnerability_use_case_test.go +++ b/pkg/usecase/vulnerability_use_case_test.go @@ -28,8 +28,8 @@ import ( myconfig "scanoss.com/vulnerabilities/pkg/config" "github.com/jmoiron/sqlx" - _ "github.com/mattn/go-sqlite3" zlog "github.com/scanoss/zap-logging-helper/pkg/logger" + _ "modernc.org/sqlite" "scanoss.com/vulnerabilities/pkg/models" ) @@ -41,7 +41,7 @@ func TestVulnerabilityUseCase(t *testing.T) { defer zlog.SyncZap() ctx := ctxzap.ToContext(context.Background(), zlog.L) s := ctxzap.Extract(ctx).Sugar() - db, err := sqlx.Connect("sqlite3", "file::memory:?cache=shared&uri=true") + db, err := sqlx.Connect("sqlite", "file::memory:?cache=shared&uri=true") if err != nil { t.Fatalf("an error '%s' was not expected when opening a stub database connection", err) } diff --git a/pkg/utils/only_date.go b/pkg/utils/only_date.go index fa7e016..fb23383 100644 --- a/pkg/utils/only_date.go +++ b/pkg/utils/only_date.go @@ -17,6 +17,7 @@ package utils import ( + "database/sql/driver" "fmt" "strings" "time" @@ -48,6 +49,65 @@ func (ct *OnlyDate) String() string { return fmt.Sprintf("%q", t.Format(ctLayout)) } +// scanLayouts are the formats accepted when reading a date from a database column, +// most specific first. A time part, if present, is discarded. +var scanLayouts = []string{ + ctLayout, + "2006-01-02 15:04:05", + "2006-01-02T15:04:05", + time.RFC3339, +} + +// Scan implements sql.Scanner. A date reaches us differently depending on the engine: +// the schema declares cves.published as TEXT so SQLite hands back a string, while a +// PostgreSQL date column hands back a time.Time. Both are accepted. +func (ct *OnlyDate) Scan(src interface{}) error { + switch v := src.(type) { + case nil: + *ct = OnlyDate(time.Time{}) + return nil + case time.Time: + *ct = OnlyDate(dateOnly(v)) + return nil + case []byte: + return ct.scanString(string(v)) + case string: + return ct.scanString(v) + default: + return fmt.Errorf("cannot scan %T into OnlyDate", src) + } +} + +// Value implements driver.Valuer, so a date is written in a form both engines accept. +func (ct OnlyDate) Value() (driver.Value, error) { + t := time.Time(ct) + if t.IsZero() { + return nil, nil + } + return t.Format(ctLayout), nil +} + +// scanString parses a date out of a textual column value. +func (ct *OnlyDate) scanString(s string) error { + s = strings.TrimSpace(s) + if len(s) == 0 { + *ct = OnlyDate(time.Time{}) + return nil + } + for _, layout := range scanLayouts { + if t, err := time.Parse(layout, s); err == nil { + *ct = OnlyDate(dateOnly(t)) + return nil + } + } + return fmt.Errorf("cannot parse %q as a date", s) +} + +// dateOnly drops the time part, keeping the calendar date in UTC. +func dateOnly(t time.Time) time.Time { + return time.Date(t.Year(), t.Month(), t.Day(), 0, 0, 0, 0, time.UTC) +} + func ParseTime(t string) time.Time { timeValue, err := time.Parse(time.DateOnly, t) if err != nil { diff --git a/pkg/utils/only_date_db_test.go b/pkg/utils/only_date_db_test.go new file mode 100644 index 0000000..684a7ea --- /dev/null +++ b/pkg/utils/only_date_db_test.go @@ -0,0 +1,61 @@ +// SPDX-License-Identifier: GPL-2.0-or-later +/* + * Copyright (C) 2018-2025 SCANOSS.COM + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +// OnlyDate has to survive being scanned out of a database column. The schema declares +// cves.published and cves.modified as TEXT, so the driver hands back a string; a +// PostgreSQL date column hands back a time.Time. Both must work, since the service +// supports both engines. + +package utils + +import ( + "testing" + "time" +) + +func TestOnlyDateScan(t *testing.T) { + want := time.Date(2020, 1, 15, 0, 0, 0, 0, time.UTC) + tests := []struct { + name string + src interface{} + want time.Time + wantErr bool + }{ + {name: "string date, as SQLite returns TEXT", src: "2020-01-15", want: want}, + {name: "byte slice date", src: []byte("2020-01-15"), want: want}, + {name: "time.Time, as PostgreSQL returns date", src: want, want: want}, + {name: "timestamp string with time part", src: "2020-01-15 10:30:00", want: want}, + {name: "nil is the zero date", src: nil, want: time.Time{}}, + {name: "empty string is the zero date", src: "", want: time.Time{}}, + {name: "unparseable string", src: "not-a-date", wantErr: true}, + {name: "unsupported type", src: 12345, wantErr: true}, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + var d OnlyDate + err := d.Scan(tt.src) + if (err != nil) != tt.wantErr { + t.Fatalf("OnlyDate.Scan(%v) error = %v, wantErr %v", tt.src, err, tt.wantErr) + } + if tt.wantErr { + return + } + if got := time.Time(d); !got.Equal(tt.want) { + t.Errorf("OnlyDate.Scan(%v) = %v, want %v", tt.src, got, tt.want) + } + }) + } +}