@wallhackio C++ rage comic where Vaporeon can't handle C++ sounds fun to draw
Send me some awful C++ constructs for inspiration
@vaporeon_ I don't know what this is doing but it looks evil:
const char* seed = "random seed";
RAND_seed(seed, sizeof(seed));
The following snippet which assigns to an rvalue, something you're not supposed to be able to do:
#include <iostream>
class A{};
int main() {
const A a;
std::cout << &(A() = a) << "\n";
}
using the ternary operator to conditionally change what variable is assigned to:
int main() {
int a;
int b;
// do stuff, also assign to a and b
(a < b ? a : b) = 3;
}
The following is actually valid C++ code:
https://www.google.com
Operator overloading lets you do plenty of absurdities. You could, for example, override <= such that it behaves like a "move assignment":
class A {
public:
int num;
A& operator<=(A& other) {
this->num = other.num;
return *this;
}
};
int main() {
A a;
A a2;
a.num = 1000;
a2 <= a; // move a's content to a2
};
There's certainly more but this is plenty of evil shit.
@wallhackio Is the RAND_seed thing:
const char* seed = "random seed";
RAND_seed(seed, sizeof(seed));
Is this similar to how you can cat > /dev/random
and then write whatever bytes there to seed the randomness pool? NetBSD made me do that on a device that didn't have sufficient hardware to generate randomness on its own...
Though: I thought sizeof(seed)
should just return sizeof(const char*)
and not the length of the string. Unless this is some extremely cursed C++ thing...
@vaporeon_ you have already put more thought into that hack than i ever have by writing this comment
@wallhackio Where's that RAND_seed
macro defined? Is it part of C++ itself or is it part of your code base?
@vaporeon_ it's from an openssl library: https://docs.openssl.org/1.0.2/man3/rand/
@aescling @vaporeon_ forgive me for not knowing what i am talking about
@aescling @vaporeon_ lmao
@wallhackio @vaporeon_ https://en.m.wikipedia.org/wiki/OpenSSL