summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog3
-rw-r--r--src/cyrsasl_digest.erl6
2 files changed, 7 insertions, 2 deletions
diff --git a/ChangeLog b/ChangeLog
index 817f0bbd..48d70960 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,8 @@
2008-02-14 Alexey Shchepin <alexey@process-one.net>
+ * src/cyrsasl_digest.erl: Unquote backslash in DIGEST-MD5 quoted
+ strings (EJAB-304)
+
* src/mod_roster.erl: Removed the ancient Psi roster workaround
* src/mod_roster_odbc.erl: Likewise
diff --git a/src/cyrsasl_digest.erl b/src/cyrsasl_digest.erl
index 1dfd5493..19069517 100644
--- a/src/cyrsasl_digest.erl
+++ b/src/cyrsasl_digest.erl
@@ -87,15 +87,17 @@ parse1([], [], T) ->
parse1([], _S, _T) ->
bad.
-parse2([$" | Cs], Key, Val, Ts) ->
+parse2([$\" | Cs], Key, Val, Ts) ->
parse3(Cs, Key, Val, Ts);
parse2([C | Cs], Key, Val, Ts) ->
parse4(Cs, Key, [C | Val], Ts);
parse2([], _, _, _) ->
bad.
-parse3([$" | Cs], Key, Val, Ts) ->
+parse3([$\" | Cs], Key, Val, Ts) ->
parse4(Cs, Key, Val, Ts);
+parse3([$\\, C | Cs], Key, Val, Ts) ->
+ parse3(Cs, Key, [C | Val], Ts);
parse3([C | Cs], Key, Val, Ts) ->
parse3(Cs, Key, [C | Val], Ts);
parse3([], _, _, _) ->