1*658eb9e1SMichael Kruse /* Regression test for mp_int_swap() bug on self-stored values. */ 2*658eb9e1SMichael Kruse #include <stdio.h> 3*658eb9e1SMichael Kruse #include "imath.h" 4*658eb9e1SMichael Kruse main(int argc,char * argv[])5*658eb9e1SMichael Kruseint main(int argc, char* argv[]) { 6*658eb9e1SMichael Kruse mpz_t a, b; 7*658eb9e1SMichael Kruse int result; 8*658eb9e1SMichael Kruse 9*658eb9e1SMichael Kruse mp_int_init_value(&a, 1); 10*658eb9e1SMichael Kruse mp_int_init_value(&b, 16); 11*658eb9e1SMichael Kruse 12*658eb9e1SMichael Kruse mp_int_swap(&a, &b); 13*658eb9e1SMichael Kruse result = (a.digits == &(a.single) && b.digits == &(b.single) && 14*658eb9e1SMichael Kruse a.digits[0] == 16 && b.digits[0] == 1); 15*658eb9e1SMichael Kruse 16*658eb9e1SMichael Kruse printf("REGRESSION: mp_int_swap() on self-stored values: %s\n", 17*658eb9e1SMichael Kruse result ? "OK" : "FAILED"); 18*658eb9e1SMichael Kruse 19*658eb9e1SMichael Kruse mp_int_clear(&b); 20*658eb9e1SMichael Kruse mp_int_clear(&a); 21*658eb9e1SMichael Kruse return !result; 22*658eb9e1SMichael Kruse } 23