X-Git-Url: https://git.netwichtig.de/gitweb/?a=blobdiff_plain;f=src%2Finspstring.cpp;h=38a51e82ffde04dcfc142e8989742201c56be9ea;hb=9133c3302428eb81f6d970502f811e8168079d5a;hp=3b87a3f70808451658a013e751fa45fe55aa5392;hpb=52deddeb7ba487e11c6ecf6ab74e52630cefd1e9;p=user%2Fhenk%2Fcode%2Finspircd.git diff --git a/src/inspstring.cpp b/src/inspstring.cpp index 3b87a3f70..38a51e82f 100644 --- a/src/inspstring.cpp +++ b/src/inspstring.cpp @@ -11,8 +11,6 @@ * --------------------------------------------------- */ -/* $Core */ - #include "inspircd.h" /* @@ -190,7 +188,7 @@ std::string BinToBase64(const std::string& data_str, const char* table, char pad } else if (data_str.length() == i + 2) { - buffer = (data[i] << 16 | data[i] << 8); + buffer = (data[i] << 16 | data[i+1] << 8); rv.push_back(table[0x3F & (buffer >> 18)]); rv.push_back(table[0x3F & (buffer >> 12)]); rv.push_back(table[0x3F & (buffer >> 6)]); @@ -205,16 +203,16 @@ std::string Base64ToBin(const std::string& data_str, const char* table) if (!table) table = b64table; - bool ok = true; int bitcount = 0; - uint32_t buffer; + uint32_t buffer = 0; const char* data = data_str.c_str(); std::string rv; - while (ok) + while (true) { const char* find = strchr(table, *data++); - ok = (find && find < table + 64); - buffer = (buffer << 6) | (ok ? find - table : 0); + if (!find || find >= table + 64) + break; + buffer = (buffer << 6) | (find - table); bitcount += 6; if (bitcount >= 8) {