Zcoin implementation bug enabled attacker to create 548, 000 Zcoins
Atila Neves via Digitalmars-d
digitalmars-d at puremagic.com
Tue Mar 7 09:45:13 PST 2017
On Tuesday, 7 March 2017 at 06:59:38 UTC, Walter Bright wrote:
> On 3/6/2017 10:06 PM, Jack Stouffer wrote:
>> To be fair, this also would have been caught with proper
>> testing ... which
>> obviously didn't happen.
>
> My idea of fair is it should never have gotten past the
> compiler. It's a simple mistake for the compiler to detect.
clang 3.9.1 with 0 flags used:
$ cat zcoin.cpp
int main() {
int a, b;
a == b;
}
$ clang++ zcoin.cpp
zcoin.cpp:3:7: warning: equality comparison result unused
[-Wunused-comparison]
a == b;
~~^~~~
zcoin.cpp:3:7: note: use '=' to turn this equality comparison
into an assignment
a == b;
^~
=
1 warning generated.
gcc, sadly, warns about nothing by default but does with `-Wall`.
But... anyone not using `-Wall -Wextra -Werror` on a new C++
codebase shouldn't be writing C++ AFAIC*. And then there's the
aforementioned lack of adequate testing.
Does D do better? Sort of (clang issues a warning, which I know
can be and is often ignored). Is this an example of amateur hour
by the Zcoin devs? Indubitably.
Atila
* Maybe there should be something like a driver's license for C++
where devs have to pass a test before they're allowed to write
code. Something like "Do you know how to use std::enable_if
without looking at cppreference.com? No? Fail." (I'd fail, I
_always_ have to look up how to use enable_if. Then again, it
_is_ a horrible hacky hack of a hack based on the hack that is
SNIFAE).
More information about the Digitalmars-d
mailing list