# HG changeset patch # User Sebastien Jodogne # Date 1399473593 -7200 # Node ID 8ce2f69436cadff463096478bf43ed52e4f5c873 # Parent 2d9a000aa3a68a61ee2e16dee1e49579cb70253d do not return strings with base64 diff -r 2d9a000aa3a6 -r 8ce2f69436ca Core/HttpServer/MongooseServer.cpp --- a/Core/HttpServer/MongooseServer.cpp Wed May 07 16:30:47 2014 +0200 +++ b/Core/HttpServer/MongooseServer.cpp Wed May 07 16:39:53 2014 +0200 @@ -474,7 +474,8 @@ } std::string b64 = s.substr(6); - std::string decoded = Toolbox::DecodeBase64(b64); + std::string decoded; + Toolbox::DecodeBase64(decoded, b64); size_t semicolons = decoded.find(':'); if (semicolons == std::string::npos) @@ -849,7 +850,9 @@ Stop(); std::string tag = std::string(username) + ":" + std::string(password); - registeredUsers_.insert(Toolbox::EncodeBase64(tag)); + std::string encoded; + Toolbox::EncodeBase64(encoded, tag); + registeredUsers_.insert(encoded); } void MongooseServer::SetSslEnabled(bool enabled) diff -r 2d9a000aa3a6 -r 8ce2f69436ca Core/Toolbox.cpp --- a/Core/Toolbox.cpp Wed May 07 16:30:47 2014 +0200 +++ b/Core/Toolbox.cpp Wed May 07 16:39:53 2014 +0200 @@ -491,14 +491,16 @@ } - std::string Toolbox::EncodeBase64(const std::string& data) + void Toolbox::EncodeBase64(std::string& result, + const std::string& data) { - return base64_encode(data); + result = base64_encode(data); } - std::string Toolbox::DecodeBase64(const std::string& data) + void Toolbox::DecodeBase64(std::string& result, + const std::string& data) { - return base64_decode(data); + result = base64_decode(data); } diff -r 2d9a000aa3a6 -r 8ce2f69436ca Core/Toolbox.h --- a/Core/Toolbox.h Wed May 07 16:30:47 2014 +0200 +++ b/Core/Toolbox.h Wed May 07 16:39:53 2014 +0200 @@ -95,9 +95,11 @@ bool IsSHA1(const std::string& str); - std::string DecodeBase64(const std::string& data); + void DecodeBase64(std::string& result, + const std::string& data); - std::string EncodeBase64(const std::string& data); + void EncodeBase64(std::string& result, + const std::string& data); std::string GetPathToExecutable(); diff -r 2d9a000aa3a6 -r 8ce2f69436ca OrthancServer/ParsedDicomFile.cpp --- a/OrthancServer/ParsedDicomFile.cpp Wed May 07 16:30:47 2014 +0200 +++ b/OrthancServer/ParsedDicomFile.cpp Wed May 07 16:39:53 2014 +0200 @@ -1095,7 +1095,8 @@ std::string mime, content; Toolbox::DecodeDataUriScheme(mime, content, dataUriScheme); - std::string decoded = Toolbox::DecodeBase64(content); + std::string decoded; + Toolbox::DecodeBase64(decoded, content); if (mime == "image/png") { diff -r 2d9a000aa3a6 -r 8ce2f69436ca UnitTestsSources/FromDcmtk.cpp --- a/UnitTestsSources/FromDcmtk.cpp Wed May 07 16:30:47 2014 +0200 +++ b/UnitTestsSources/FromDcmtk.cpp Wed May 07 16:39:53 2014 +0200 @@ -65,7 +65,8 @@ ASSERT_EQ("image/png", m); ASSERT_EQ(116, c.size()); - std::string cc = Toolbox::DecodeBase64(c); + std::string cc; + Toolbox::DecodeBase64(cc, c); PngReader reader; reader.ReadFromMemory(cc); diff -r 2d9a000aa3a6 -r 8ce2f69436ca UnitTestsSources/UnitTestsMain.cpp --- a/UnitTestsSources/UnitTestsMain.cpp Wed May 07 16:30:47 2014 +0200 +++ b/UnitTestsSources/UnitTestsMain.cpp Wed May 07 16:39:53 2014 +0200 @@ -306,14 +306,25 @@ } +static std::string EncodeBase64Bis(const std::string& s) +{ + std::string result; + Toolbox::EncodeBase64(result, s); + return result; +} + + TEST(Toolbox, Base64) { - ASSERT_EQ("", Toolbox::EncodeBase64("")); - ASSERT_EQ("YQ==", Toolbox::EncodeBase64("a")); + ASSERT_EQ("", EncodeBase64Bis("")); + ASSERT_EQ("YQ==", EncodeBase64Bis("a")); const std::string hello = "SGVsbG8gd29ybGQ="; - ASSERT_EQ(hello, Toolbox::EncodeBase64("Hello world")); - ASSERT_EQ("Hello world", Toolbox::DecodeBase64(hello)); + ASSERT_EQ(hello, EncodeBase64Bis("Hello world")); + + std::string decoded; + Toolbox::DecodeBase64(decoded, hello); + ASSERT_EQ("Hello world", decoded); } TEST(Toolbox, PathToExecutable)