[Cryptography] GOTO Considered Harmful
patrick at rayservers.net
Fri Feb 28 16:36:25 EST 2014
John Ioannidis wrote, On 02/28/2014 02:13 PM:
> I assume you are being sarcastic? The new code is even more awful.
You give no specifics, so I assume you object to the use of "||=".
Here's a new version which avoids ||=, and also avoids using the
assignment operator inside an expression:
Note well: All I have done is refactor Apple's code into a form that
does not involve "goto". If each of my refactoring steps was correct,
then the resulting code should have exactly the same behavior as the
original. That means *the bug is still there*, except now it's easier
Also, if anyone complains about some corner case in the code where err
== 0 is returned erroneously, then great. That exact same behavior also
occurs in Apple's original code, and I congratulate you on finding yet
another bug in *their* code.
I say all this just to forestall any retorts along the lines of "Hey,
your code has bugs too!" Anyone who says that is missing the point of
my exercise. Again: if did the refactoring properly, then my code is
logically equivalent to Apple's code -- so any bug you find in my code
is also a bug in Apple's code. Please understand that.
I have also added a third piece of code at the bottom which entirely
removes the egregious bug already found in Apple's code.
More information about the cryptography