diff --git a/lib/manager/docker-compose/extract.ts b/lib/manager/docker-compose/extract.ts index 88adf9f278bf801854aea0e379e47f7fb8b10f25..4bcf0a791324f6cbf0d66b222b9bfeb2357e9261 100644 --- a/lib/manager/docker-compose/extract.ts +++ b/lib/manager/docker-compose/extract.ts @@ -1,3 +1,4 @@ +import is from '@sindresorhus/is'; import { safeLoad } from 'js-yaml'; import { logger } from '../../logger'; @@ -78,7 +79,7 @@ export function extractPackageFile( // Image name/tags for services are only eligible for update if they don't // use variables and if the image is not built locally const deps = Object.values(services || {}) - .filter((service) => service?.image && !service?.build) + .filter((service) => is.string(service?.image) && !service?.build) .map((service) => { const dep = getDep(service.image); const lineNumber = lineMapper.pluckLineNumber(service.image); diff --git a/lib/manager/dockerfile/__snapshots__/extract.spec.ts.snap b/lib/manager/dockerfile/__snapshots__/extract.spec.ts.snap index 8fa40c464167908d51018d899be6938725ccabb9..19960ee8cc275f3983b805ff326a9ebd9d29d71f 100644 --- a/lib/manager/dockerfile/__snapshots__/extract.spec.ts.snap +++ b/lib/manager/dockerfile/__snapshots__/extract.spec.ts.snap @@ -378,3 +378,9 @@ Array [ }, ] `; + +exports[`lib/manager/dockerfile/extract getDep() rejects null 1`] = ` +Object { + "skipReason": "invalid-value", +} +`; diff --git a/lib/manager/dockerfile/extract.spec.ts b/lib/manager/dockerfile/extract.spec.ts index 864c53b1d32f95b08edab3b8551f494eef0789f9..93d0af0dacf2aca7207ab0e6c344083173ff60ec 100644 --- a/lib/manager/dockerfile/extract.spec.ts +++ b/lib/manager/dockerfile/extract.spec.ts @@ -1,5 +1,5 @@ import { readFileSync } from 'fs'; -import { extractPackageFile } from './extract'; +import { extractPackageFile, getDep } from './extract'; const d1 = readFileSync( 'lib/manager/dockerfile/__fixtures__/Dockerfile1', @@ -151,4 +151,9 @@ describe('lib/manager/dockerfile/extract', () => { expect(res).toMatchSnapshot(); }); }); + describe('getDep()', () => { + it('rejects null', () => { + expect(getDep(null)).toMatchSnapshot(); + }); + }); }); diff --git a/lib/manager/dockerfile/extract.ts b/lib/manager/dockerfile/extract.ts index 2c9b69763784fbf70bceca60f61650ceb8024655..aaba5097229e5d09b53dba6edb84a2cf2d986aad 100644 --- a/lib/manager/dockerfile/extract.ts +++ b/lib/manager/dockerfile/extract.ts @@ -1,3 +1,4 @@ +import is from '@sindresorhus/is'; import * as datasourceDocker from '../../datasource/docker'; import { logger } from '../../logger'; import { SkipReason } from '../../types'; @@ -35,6 +36,11 @@ export function getDep( currentFrom: string, specifyReplaceString = true ): PackageDependency { + if (!is.string(currentFrom)) { + return { + skipReason: SkipReason.InvalidValue, + }; + } const dep = splitImageParts(currentFrom); if (specifyReplaceString) { dep.replaceString = currentFrom;