X-Git-Url: http://git.meshlink.io/?a=blobdiff_plain;f=src%2Fed25519%2Fecdsa.c;fp=src%2Fed25519%2Fecdsa.c;h=ec53c070f67f792838e45c5cd1549c89193ae2b7;hb=b67296418c51784d39a24c3041e2cb199bee06f2;hp=2606a21e2e161e26240cd40eb15f02f3e9003751;hpb=f79cc0e0bba16a3aa42a5fa13098cda714623205;p=meshlink diff --git a/src/ed25519/ecdsa.c b/src/ed25519/ecdsa.c index 2606a21e..ec53c070 100644 --- a/src/ed25519/ecdsa.c +++ b/src/ed25519/ecdsa.c @@ -42,8 +42,9 @@ ecdsa_t *ecdsa_set_base64_public_key(const char *p) { return 0; } - ecdsa_t *ecdsa = xzalloc(sizeof *ecdsa); + ecdsa_t *ecdsa = xzalloc(sizeof * ecdsa); len = b64decode(p, ecdsa->public, len); + if(len != 32) { logger(NULL, MESHLINK_ERROR, "Invalid format of public key! len = %d", len); free(ecdsa); @@ -63,17 +64,23 @@ char *ecdsa_get_base64_public_key(ecdsa_t *ecdsa) { // Read PEM ECDSA keys ecdsa_t *ecdsa_read_pem_public_key(FILE *fp) { - ecdsa_t *ecdsa = xzalloc(sizeof *ecdsa); - if(fread(ecdsa->public, sizeof ecdsa->public, 1, fp) == 1) + ecdsa_t *ecdsa = xzalloc(sizeof * ecdsa); + + if(fread(ecdsa->public, sizeof ecdsa->public, 1, fp) == 1) { return ecdsa; + } + free(ecdsa); return 0; } ecdsa_t *ecdsa_read_pem_private_key(FILE *fp) { - ecdsa_t *ecdsa = xmalloc(sizeof *ecdsa); - if(fread(ecdsa, sizeof *ecdsa, 1, fp) == 1) + ecdsa_t *ecdsa = xmalloc(sizeof * ecdsa); + + if(fread(ecdsa, sizeof * ecdsa, 1, fp) == 1) { return ecdsa; + } + free(ecdsa); return 0; }