From 19adc29d1deed946a76887535de50259834c48b4 Mon Sep 17 00:00:00 2001
From: RePod <RePod@users.noreply.github.com>
Date: Tue, 19 Jan 2021 17:42:23 -0500
Subject: [PATCH] LANraragi: Safer tag parsing. (#5490)

It was possible to get a null into the function and the following split() did not like it.
---
 src/all/lanraragi/build.gradle                |  2 +-
 .../extension/all/lanraragi/LANraragi.kt      | 29 ++++++++++---------
 2 files changed, 17 insertions(+), 14 deletions(-)

diff --git a/src/all/lanraragi/build.gradle b/src/all/lanraragi/build.gradle
index dc5a8bdca..156f6af9e 100644
--- a/src/all/lanraragi/build.gradle
+++ b/src/all/lanraragi/build.gradle
@@ -5,7 +5,7 @@ ext {
     extName = 'LANraragi'
     pkgNameSuffix = 'all.lanraragi'
     extClass = '.LANraragi'
-    extVersionCode = 3
+    extVersionCode = 4
     libVersion = '1.2'
 }
 
diff --git a/src/all/lanraragi/src/eu/kanade/tachiyomi/extension/all/lanraragi/LANraragi.kt b/src/all/lanraragi/src/eu/kanade/tachiyomi/extension/all/lanraragi/LANraragi.kt
index 6b05409af..c1e54879f 100644
--- a/src/all/lanraragi/src/eu/kanade/tachiyomi/extension/all/lanraragi/LANraragi.kt
+++ b/src/all/lanraragi/src/eu/kanade/tachiyomi/extension/all/lanraragi/LANraragi.kt
@@ -430,26 +430,29 @@ open class LANraragi : ConfigurableSource, HttpSource() {
         return getTopResponse(response).request().url().queryParameter("start")!!.toInt()
     }
 
-    private fun getArtist(tags: String): String {
-        tags.split(',').forEach {
+    private fun getNSTag(tags: String?, tag: String): List<String>? {
+        tags?.split(',')?.forEach {
             if (it.contains(':')) {
-                val temp = it.trim().split(':')
-
-                if (temp[0].equals("artist", true)) return temp[1]
+                val temp = it.trim().split(":", limit = 2)
+                if (temp[0].equals(tag, true)) return temp
             }
         }
 
+        return null
+    }
+
+    private fun getArtist(tags: String?): String {
+        getNSTag(tags, "artist")?.let {
+            return it[1]
+        }
+
         return "N/A"
     }
 
-    private fun getDateAdded(tags: String): String {
-        tags.split(',').forEach {
-            if (it.contains(':')) {
-                val temp = it.trim().split(':')
-
-                // Pad Date Added LRR plugin (or user specified namespace) to milliseconds
-                if (temp[0].equals(latestNamespacePref, true)) return temp[1].padEnd(13, '0')
-            }
+    private fun getDateAdded(tags: String?): String {
+        getNSTag(tags, "date_added")?.let {
+            // Pad Date Added NS to milliseconds
+            return it[1].padEnd(13, '0')
         }
 
         return ""