From 776d36225bd04c301c0edb4837efb04d83d88e1c Mon Sep 17 00:00:00 2001 From: Rhys Arkins <rhys@arkins.net> Date: Thu, 2 Apr 2020 19:34:44 +0200 Subject: [PATCH] fix(cocoapods): add null checks for out of bound lines Closes #5857, Closes #5858 --- lib/manager/cocoapods/extract.ts | 3 +++ lib/manager/cocoapods/update.spec.ts | 10 ++++++++++ lib/manager/cocoapods/update.ts | 8 ++++++++ 3 files changed, 21 insertions(+) diff --git a/lib/manager/cocoapods/extract.ts b/lib/manager/cocoapods/extract.ts index 7362adfa33..0ae1eefe06 100644 --- a/lib/manager/cocoapods/extract.ts +++ b/lib/manager/cocoapods/extract.ts @@ -27,6 +27,9 @@ export interface ParsedLine { export function parseLine(line: string): ParsedLine { const result: ParsedLine = {}; + if (!line) { + return result; + } for (const regex of Object.values(regexMappings)) { const match = regex.exec(line.replace(/#.*$/, '')); if (match && match.groups) { diff --git a/lib/manager/cocoapods/update.spec.ts b/lib/manager/cocoapods/update.spec.ts index ee73d947ce..b87aa8b777 100644 --- a/lib/manager/cocoapods/update.spec.ts +++ b/lib/manager/cocoapods/update.spec.ts @@ -9,6 +9,16 @@ const fileContent = fs.readFileSync( describe('lib/manager/cocoapods/update', () => { describe('updateDependency', () => { + it('handles undefined lines', () => { + const upgrade = { + depName: 'b', + managerData: { lineNumber: 999999999 }, + currentValue: '1.2.3', + newValue: '2.0.0', + }; + const res = updateDependency({ fileContent, upgrade }); + expect(res).toBeNull(); + }); it('replaces existing value', () => { const upgrade = { depName: 'b', diff --git a/lib/manager/cocoapods/update.ts b/lib/manager/cocoapods/update.ts index c3c7a48779..ac8b81ab17 100644 --- a/lib/manager/cocoapods/update.ts +++ b/lib/manager/cocoapods/update.ts @@ -24,6 +24,14 @@ export function updateDependency({ const lines = fileContent.split('\n'); const lineToChange = lines[managerData.lineNumber]; + if (!lineToChange) { + logger.warn( + { fileContent, depName, currentValue, newValue }, + 'Undefined cocoapods lineToChange' + ); + return null; + } + if (!lineContainsDep(lineToChange, depName)) { return null; } -- GitLab