summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSimon MacMullen <simon@rabbitmq.com>2011-11-23 13:40:53 +0000
committerSimon MacMullen <simon@rabbitmq.com>2011-11-23 13:40:53 +0000
commit01dcf6a810bd1cd8ead552a7a3924bf5170282c7 (patch)
treebe7135d29d85fa80a15b6c9284f81550bb40423b
parent73a31048797f70aafae8ab7ff7c1aea5efbb8a4f (diff)
parenteb9fa45f9d3bfc280c1bd3c2b28e8e1f95dae15f (diff)
downloadrabbitmq-server-git-01dcf6a810bd1cd8ead552a7a3924bf5170282c7.tar.gz
Merge bug 24467 (Autogenerated queue names don't pass validation)
-rw-r--r--src/rabbit_guid.erl9
1 files changed, 8 insertions, 1 deletions
diff --git a/src/rabbit_guid.erl b/src/rabbit_guid.erl
index 523af7492d..2d0f5014f2 100644
--- a/src/rabbit_guid.erl
+++ b/src/rabbit_guid.erl
@@ -89,8 +89,15 @@ guid() ->
erlang:md5(term_to_binary(G)).
%% generate a readable string representation of a GUID.
+%%
+%% employs base64url encoding, which is safer in more contexts than
+%% plain base64.
string_guid(Prefix) ->
- Prefix ++ "-" ++ base64:encode_to_string(guid()).
+ Prefix ++ "-" ++ lists:foldl(fun ($\+, Acc) -> [$\- | Acc];
+ ($\/, Acc) -> [$\_ | Acc];
+ ($\=, Acc) -> Acc;
+ (Chr, Acc) -> [Chr | Acc]
+ end, [], base64:encode_to_string(guid())).
binstring_guid(Prefix) ->
list_to_binary(string_guid(Prefix)).