From fc21a768336b5583212a56fb5e83e53c23f45e66 Mon Sep 17 00:00:00 2001
From: Rhys Arkins <rhys@arkins.net>
Date: Tue, 11 Aug 2020 08:08:16 +0200
Subject: [PATCH] fix: harden startsWith checks

---
 lib/config/migration.ts                   |  2 +-
 lib/versioning/ruby/strategies/replace.ts | 10 +++++-----
 2 files changed, 6 insertions(+), 6 deletions(-)

diff --git a/lib/config/migration.ts b/lib/config/migration.ts
index 9949fe1428..9d04042862 100644
--- a/lib/config/migration.ts
+++ b/lib/config/migration.ts
@@ -219,7 +219,7 @@ export function migrateConfig(
           } else if (val[i] === ':library' || val[i] === 'config:library') {
             isMigrated = true;
             migratedConfig.extends[i] = 'config:js-lib';
-          } else if (val[i].startsWith(':masterIssue')) {
+          } else if (val[i]?.startsWith(':masterIssue')) {
             isMigrated = true;
             migratedConfig.extends[i] = val[i].replace(
               'masterIssue',
diff --git a/lib/versioning/ruby/strategies/replace.ts b/lib/versioning/ruby/strategies/replace.ts
index f9d925ee18..848fba0f37 100644
--- a/lib/versioning/ruby/strategies/replace.ts
+++ b/lib/versioning/ruby/strategies/replace.ts
@@ -10,7 +10,7 @@ function isMajorRange(range: string): boolean {
   const splitRange = range.split(',').map((part) => part.trim());
   return (
     splitRange.length === 1 &&
-    splitRange[0].startsWith('~>') &&
+    splitRange[0]?.startsWith('~>') &&
     countInstancesOf(splitRange[0], '.') === 0
   );
 }
@@ -19,9 +19,9 @@ function isCommonRubyMajorRange(range: string): boolean {
   const splitRange = range.split(',').map((part) => part.trim());
   return (
     splitRange.length === 2 &&
-    splitRange[0].startsWith('~>') &&
+    splitRange[0]?.startsWith('~>') &&
     countInstancesOf(splitRange[0], '.') === 1 &&
-    splitRange[1].startsWith('>=')
+    splitRange[1]?.startsWith('>=')
   );
 }
 
@@ -29,9 +29,9 @@ function isCommonRubyMinorRange(range: string): boolean {
   const splitRange = range.split(',').map((part) => part.trim());
   return (
     splitRange.length === 2 &&
-    splitRange[0].startsWith('~>') &&
+    splitRange[0]?.startsWith('~>') &&
     countInstancesOf(splitRange[0], '.') === 2 &&
-    splitRange[1].startsWith('>=')
+    splitRange[1]?.startsWith('>=')
   );
 }
 
-- 
GitLab