Avoid memory leak and overflow in addition test
This commit is contained in:
parent
531b545578
commit
909983a9d2
@ -211,7 +211,7 @@ main(void)
|
|||||||
assert(p[i] == 0);
|
assert(p[i] == 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
hex = sodium_malloc(crypto_core_ed25519_SCALARBYTES * 2 + 1);
|
hex = (char *) sodium_malloc(crypto_core_ed25519_SCALARBYTES * 2 + 1);
|
||||||
|
|
||||||
for (i = 0; i < crypto_core_ed25519_SCALARBYTES; i++) {
|
for (i = 0; i < crypto_core_ed25519_SCALARBYTES; i++) {
|
||||||
sc[i] = 255 - i;
|
sc[i] = 255 - i;
|
||||||
@ -234,7 +234,7 @@ main(void)
|
|||||||
if (crypto_core_ed25519_scalar_invert(sc, sc) != 0) {
|
if (crypto_core_ed25519_scalar_invert(sc, sc) != 0) {
|
||||||
printf("crypto_core_ed25519_scalar_invert() failed\n");
|
printf("crypto_core_ed25519_scalar_invert() failed\n");
|
||||||
}
|
}
|
||||||
hex = sodium_malloc(crypto_core_ed25519_SCALARBYTES * 2 + 1);
|
|
||||||
sodium_bin2hex(hex, crypto_core_ed25519_SCALARBYTES * 2 + 1,
|
sodium_bin2hex(hex, crypto_core_ed25519_SCALARBYTES * 2 + 1,
|
||||||
sc, crypto_core_ed25519_SCALARBYTES);
|
sc, crypto_core_ed25519_SCALARBYTES);
|
||||||
printf("inv3: %s\n", hex);
|
printf("inv3: %s\n", hex);
|
||||||
@ -291,16 +291,20 @@ main(void)
|
|||||||
sc, crypto_core_ed25519_SCALARBYTES);
|
sc, crypto_core_ed25519_SCALARBYTES);
|
||||||
printf("comp4: %s\n", hex);
|
printf("comp4: %s\n", hex);
|
||||||
|
|
||||||
sc2 = sodium_malloc(crypto_core_ed25519_SCALARBYTES);
|
sc2 = (unsigned char *) sodium_malloc(crypto_core_ed25519_SCALARBYTES);
|
||||||
sc3 = sodium_malloc(crypto_core_ed25519_SCALARBYTES);
|
sc3 = (unsigned char *) sodium_malloc(crypto_core_ed25519_SCALARBYTES);
|
||||||
randombytes_buf(sc, crypto_core_ed25519_SCALARBYTES);
|
for (i = 0; i < 1000; i++) {
|
||||||
randombytes_buf(sc2, crypto_core_ed25519_SCALARBYTES);
|
randombytes_buf(sc, crypto_core_ed25519_SCALARBYTES);
|
||||||
crypto_core_ed25519_scalar_add(sc3, sc, sc2);
|
randombytes_buf(sc2, crypto_core_ed25519_SCALARBYTES);
|
||||||
assert(!sodium_is_zero(sc, crypto_core_ed25519_SCALARBYTES));
|
sc[crypto_core_ed25519_SCALARBYTES - 1] &= 0x7f;
|
||||||
crypto_core_ed25519_scalar_sub(sc3, sc3, sc2);
|
sc2[crypto_core_ed25519_SCALARBYTES - 1] &= 0x7f;
|
||||||
assert(!sodium_is_zero(sc, crypto_core_ed25519_SCALARBYTES));
|
crypto_core_ed25519_scalar_add(sc3, sc, sc2);
|
||||||
crypto_core_ed25519_scalar_sub(sc3, sc3, sc);
|
assert(!sodium_is_zero(sc, crypto_core_ed25519_SCALARBYTES));
|
||||||
assert(sodium_is_zero(sc3, crypto_core_ed25519_SCALARBYTES));
|
crypto_core_ed25519_scalar_sub(sc3, sc3, sc2);
|
||||||
|
assert(!sodium_is_zero(sc, crypto_core_ed25519_SCALARBYTES));
|
||||||
|
crypto_core_ed25519_scalar_sub(sc3, sc3, sc);
|
||||||
|
assert(sodium_is_zero(sc3, crypto_core_ed25519_SCALARBYTES));
|
||||||
|
}
|
||||||
|
|
||||||
memset(sc, 0x69, crypto_core_ed25519_UNIFORMBYTES);
|
memset(sc, 0x69, crypto_core_ed25519_UNIFORMBYTES);
|
||||||
memset(sc2, 0x42, crypto_core_ed25519_UNIFORMBYTES);
|
memset(sc2, 0x42, crypto_core_ed25519_UNIFORMBYTES);
|
||||||
|
Loading…
Reference in New Issue
Block a user