X-Git-Url: https://git.netwichtig.de/gitweb/?a=blobdiff_plain;f=src%2Finspstring.cpp;h=534b7ce008558a32ac466eaa786ea1f6c1194560;hb=e6601069038c35c546fd3f3dce95024b0d13f1b4;hp=3b87a3f70808451658a013e751fa45fe55aa5392;hpb=52deddeb7ba487e11c6ecf6ab74e52630cefd1e9;p=user%2Fhenk%2Fcode%2Finspircd.git diff --git a/src/inspstring.cpp b/src/inspstring.cpp index 3b87a3f70..534b7ce00 100644 --- a/src/inspstring.cpp +++ b/src/inspstring.cpp @@ -1,17 +1,23 @@ -/* +------------------------------------+ - * | Inspire Internet Relay Chat Daemon | - * +------------------------------------+ +/* + * InspIRCd -- Internet Relay Chat Daemon + * + * Copyright (C) 2010 Daniel De Graaf + * Copyright (C) 2007 Dennis Friis + * Copyright (C) 2005-2007 Craig Edwards * - * InspIRCd: (C) 2002-2010 InspIRCd Development Team - * See: http://wiki.inspircd.org/Credits + * This file is part of InspIRCd. InspIRCd is free software: you can + * redistribute it and/or modify it under the terms of the GNU General Public + * License as published by the Free Software Foundation, version 2. * - * This program is free but copyrighted software; see - * the file COPYING for details. + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. * - * --------------------------------------------------- + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . */ -/* $Core */ #include "inspircd.h" @@ -190,7 +196,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 +211,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) {