diff --git a/externals/jsonlint/src/Seld/JsonLint/JsonParser.php b/externals/jsonlint/src/Seld/JsonLint/JsonParser.php
--- a/externals/jsonlint/src/Seld/JsonLint/JsonParser.php
+++ b/externals/jsonlint/src/Seld/JsonLint/JsonParser.php
@@ -481,8 +481,8 @@
         // UTF-8 ByteOrderMark sequence
         $bom = "\xEF\xBB\xBF";
 
-        if (substr($input, 0, 3) === $bom) {
+        if ($input && (substr($input, 0, 3) === $bom)) {
             $this->parseError("BOM detected, make sure your input does not include a Unicode Byte-Order-Mark", array());
         }
     }
-}
\ No newline at end of file
+}
diff --git a/externals/jsonlint/src/Seld/JsonLint/Lexer.php b/externals/jsonlint/src/Seld/JsonLint/Lexer.php
--- a/externals/jsonlint/src/Seld/JsonLint/Lexer.php
+++ b/externals/jsonlint/src/Seld/JsonLint/Lexer.php
@@ -94,7 +94,7 @@
     public function getUpcomingInput()
     {
         $next = $this->match;
-        if (strlen($next) < 20) {
+        if (($this->input) && (strlen($next) < 20)) {
             $next .= substr($this->input, 0, 20 - strlen($next));
         }
 
@@ -128,6 +128,9 @@
         $rules = $this->getCurrentRules();
         $rulesLen = count($rules);
 
+        if (!isset($this->input)) {
+          $this->input = '';
+        }
         for ($i=0; $i < $rulesLen; $i++) {
             if (preg_match($this->rules[$rules[$i]], $this->input, $match)) {
                 preg_match_all('/\n.*/', $match[0], $lines);
@@ -212,4 +215,4 @@
             return 'INVALID';
         }
     }
-}
\ No newline at end of file
+}