/*
* InspIRCd -- Internet Relay Chat Daemon
*
+ * Copyright (C) 2019-2020 Matt Schatz <genius3000@g3k.solutions>
+ * Copyright (C) 2018 linuxdaemon <linuxdaemon.irc@gmail.com>
+ * Copyright (C) 2013 Daniel Vassdal <shutter@canternet.org>
+ * Copyright (C) 2013 Adam <Adam@anope.org>
+ * Copyright (C) 2012-2015 Attila Molnar <attilamolnar@hush.com>
+ * Copyright (C) 2012-2014, 2017-2018, 2020 Sadie Powell <sadie@witchery.services>
+ * Copyright (C) 2012, 2018 Robby <robby@chatbelgie.be>
+ * Copyright (C) 2012 ChrisTX <xpipe@hotmail.de>
* Copyright (C) 2009-2010 Daniel De Graaf <danieldg@inspircd.org>
- * Copyright (C) 2006-2008 Robin Burchell <robin+git@viroteck.net>
- * Copyright (C) 2005-2008 Craig Edwards <craigedwards@brainbox.cc>
- * Copyright (C) 2008 Thomas Stagner <aquanight@inspircd.org>
- * Copyright (C) 2006-2007 Oliver Lupton <oliverlupton@gmail.com>
+ * Copyright (C) 2007, 2010 Craig Edwards <brain@inspircd.org>
* Copyright (C) 2007 Dennis Friis <peavey@inspircd.org>
- * Copyright (C) 2003-2019 Anope Team <team@anope.org>
+ * Copyright (C) 2006-2008 Robin Burchell <robin+git@viroteck.net>
*
* 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
}
else
{
- /* Found something thats not a number, find out how much
+ /* Found something that's not a number, find out how much
* it multiplies the built up number by, multiply the total
* and reset the built up number.
*/
std::string InspIRCd::GenRandomStr(unsigned int length, bool printable)
{
- char* buf = new char[length];
- GenRandom(buf, length);
- std::string rv;
- rv.resize(length);
- for(size_t i = 0; i < length; i++)
- rv[i] = printable ? 0x3F + (buf[i] & 0x3F) : buf[i];
- delete[] buf;
- return rv;
+ std::vector<char> str(length);
+ GenRandom(&str[0], length);
+ if (printable)
+ for (size_t i = 0; i < length; i++)
+ str[i] = 0x3F + (str[i] & 0x3F);
+ return std::string(&str[0], str.size());
}
// NOTE: this has a slight bias for lower values if max is not a power of 2.
return rv % max;
}
-// This is overridden by a higher-quality algorithm when SSL support is loaded
+// This is overridden by a higher-quality algorithm when TLS (SSL) support is loaded
void InspIRCd::DefaultGenRandom(char* output, size_t max)
{
#if defined HAS_ARC4RANDOM_BUF