> Discovered this problem while trying to fix > https://github.com/joyent/node/issues/7704. > > Attached is a fix for it.
Trouble is that modified code might avoid crash, but it doesn't produce correct result either. [No, not even Adam's suggestion]. Actually bn_mul_mont is abused in bn_exp.c, because it's actually allowed to do nothing depending on arguments, which is noted by zero return value. The criteria for doing nothing is platform-specific, for example some platforms insist that number of elements in even and data pointers are aligned in specific manner. But there is one common criteria and it is requirement that number of elements is larger than one. Correct solution would be to introduce for example bn_mul_mont_eligible call that could be queried prior taking the path calling bn_mul_mont. For the moment there is only one platform that have this path, x86_64, and as interim measure it's possible to implement the boundary condition check as http://git.openssl.org/gitweb/?p=openssl.git;a=commitdiff;h=eca441b2b4d33d2a18d163ef9b4b3aff14251c73. ______________________________________________________________________ OpenSSL Project http://www.openssl.org Development Mailing List [email protected] Automated List Manager [email protected]
