Skip to content

Commit 311053b

Browse files
committed
fix for overlapping m and sm in mayo_sign
1 parent 32cecd4 commit 311053b

File tree

1 file changed

+6
-4
lines changed

1 file changed

+6
-4
lines changed

src/mayo.c

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -507,12 +507,14 @@ int mayo_sign(const mayo_params_t *p, unsigned char *sm,
507507
size_t mlen, const unsigned char *csk) {
508508
int ret = MAYO_OK;
509509
const int param_sig_bytes = PARAM_sig_bytes(p);
510-
size_t siglen = param_sig_bytes;
511-
ret = mayo_sign_signature(p, sm, &siglen, m, mlen, csk);
512-
if (ret != MAYO_OK || siglen != (size_t) param_sig_bytes)
510+
size_t siglen;
511+
memmove(sm + param_sig_bytes, m, mlen);
512+
ret = mayo_sign_signature(p, sm, &siglen, sm + param_sig_bytes, mlen, csk);
513+
if (ret != MAYO_OK || siglen != (size_t) param_sig_bytes){
514+
memset(sm, 0, siglen + mlen);
513515
goto err;
516+
}
514517

515-
memmove(sm + param_sig_bytes, m, mlen);
516518
*smlen = siglen + mlen;
517519
err:
518520
return ret;

0 commit comments

Comments
 (0)