From 9c3e336e22e57a55223bbc21e69aa51b321f575c Mon Sep 17 00:00:00 2001 From: Rhys Arkins <rhys@arkins.net> Date: Sun, 13 Dec 2020 12:11:43 +0100 Subject: [PATCH] fix(docker): better checking for null dep strings --- lib/manager/docker-compose/extract.ts | 3 ++- lib/manager/dockerfile/__snapshots__/extract.spec.ts.snap | 6 ++++++ lib/manager/dockerfile/extract.spec.ts | 7 ++++++- lib/manager/dockerfile/extract.ts | 6 ++++++ 4 files changed, 20 insertions(+), 2 deletions(-) diff --git a/lib/manager/docker-compose/extract.ts b/lib/manager/docker-compose/extract.ts index 88adf9f278..4bcf0a7913 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 8fa40c4641..19960ee8cc 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 864c53b1d3..93d0af0dac 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 2c9b697637..aaba509722 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; -- GitLab