From 9d846ff4e2a1d18faa3ce6df15f89425d194dd06 Mon Sep 17 00:00:00 2001
From: Christopher Smith <chris@jalakai.co.uk>
Date: Sat, 4 Oct 2014 11:59:42 +0100
Subject: [PATCH] escaping backslash should be included in split items

---
 lib/plugins/authplain/_test/escaping.test.php | 2 +-
 lib/plugins/authplain/auth.php                | 5 ++++-
 2 files changed, 5 insertions(+), 2 deletions(-)

diff --git a/lib/plugins/authplain/_test/escaping.test.php b/lib/plugins/authplain/_test/escaping.test.php
index 5a5f67c82..cbfbbc587 100644
--- a/lib/plugins/authplain/_test/escaping.test.php
+++ b/lib/plugins/authplain/_test/escaping.test.php
@@ -97,7 +97,7 @@ class helper_plugin_authplain_escaping_test extends DokuWikiTest {
             $test_line = $userpass.$escaped.$other_user_data;
             $result = $this->auth->splitUserData($test_line);
 
-            $this->assertEquals($testname, $result[2]);
+            $this->assertEquals($escaped, $result[2]);
         }
     }
     
diff --git a/lib/plugins/authplain/auth.php b/lib/plugins/authplain/auth.php
index ec5d16e9d..3d303597c 100644
--- a/lib/plugins/authplain/auth.php
+++ b/lib/plugins/authplain/auth.php
@@ -356,9 +356,12 @@ class auth_plugin_authplain extends DokuWiki_Auth_Plugin {
 
         $row = array();
         $piece = '';
-        for($i=0; $i<strlen($line); $i++){
+        $len = strlen($line);
+        for($i=0; $i<$len; $i++){
             if ($line[$i]=='\\'){
+                $piece .= $line[$i];
                 $i++;
+                if ($i>=$len) break;
             } else if ($line[$i]==':'){
                 $row[] = $piece;
                 $piece = '';
-- 
GitLab