From: Tomas Mraz Date: Mon, 10 Jan 2022 16:26:33 +0000 (+0100) Subject: pkeyutl: Fix regression with -kdflen option X-Git-Tag: openssl-3.2.0-alpha1~3095 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=b82fd89d8bae1445c89ec90d1a6145fe3216d2d7;p=thirdparty%2Fopenssl.git pkeyutl: Fix regression with -kdflen option Reviewed-by: Paul Dale (Merged from https://github.com/openssl/openssl/pull/17461) --- diff --git a/apps/pkeyutl.c b/apps/pkeyutl.c index 9e18dfc0e92..01c4f064d2e 100644 --- a/apps/pkeyutl.c +++ b/apps/pkeyutl.c @@ -463,23 +463,23 @@ int pkeyutl_main(int argc, char **argv) } goto end; } - if (kdflen != 0) { - buf_outlen = kdflen; - rv = 1; + if (rawin) { + /* rawin allocates the buffer in do_raw_keyop() */ + rv = do_raw_keyop(pkey_op, mctx, pkey, in, filesize, NULL, 0, + &buf_out, (size_t *)&buf_outlen); } else { - if (rawin) { - /* rawin allocates the buffer in do_raw_keyop() */ - rv = do_raw_keyop(pkey_op, mctx, pkey, in, filesize, NULL, 0, - &buf_out, (size_t *)&buf_outlen); + if (kdflen != 0) { + buf_outlen = kdflen; + rv = 1; } else { rv = do_keyop(ctx, pkey_op, NULL, (size_t *)&buf_outlen, buf_in, (size_t)buf_inlen); - if (rv > 0 && buf_outlen != 0) { - buf_out = app_malloc(buf_outlen, "buffer output"); - rv = do_keyop(ctx, pkey_op, - buf_out, (size_t *)&buf_outlen, - buf_in, (size_t)buf_inlen); - } + } + if (rv > 0 && buf_outlen != 0) { + buf_out = app_malloc(buf_outlen, "buffer output"); + rv = do_keyop(ctx, pkey_op, + buf_out, (size_t *)&buf_outlen, + buf_in, (size_t)buf_inlen); } } if (rv <= 0) {