mirror of https://github.com/openssl/openssl.git
Fix memory leaks from missing checks of return value from sk_OPENSSL_STRING_push()
Reviewed-by: Saša Nedvědický <sashan@openssl.org>
Reviewed-by: Tomas Mraz <tomas@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/26238)
(cherry picked from commit d48874ab47
)
This commit is contained in:
parent
26150c1716
commit
cdc1a180b1
|
@ -127,7 +127,8 @@ int asn1parse_main(int argc, char **argv)
|
||||||
dump = strtol(opt_arg(), NULL, 0);
|
dump = strtol(opt_arg(), NULL, 0);
|
||||||
break;
|
break;
|
||||||
case OPT_STRPARSE:
|
case OPT_STRPARSE:
|
||||||
sk_OPENSSL_STRING_push(osk, opt_arg());
|
if (sk_OPENSSL_STRING_push(osk, opt_arg()) <= 0)
|
||||||
|
goto end;
|
||||||
break;
|
break;
|
||||||
case OPT_GENSTR:
|
case OPT_GENSTR:
|
||||||
genstr = opt_arg();
|
genstr = opt_arg();
|
||||||
|
|
27
apps/cms.c
27
apps/cms.c
|
@ -502,13 +502,15 @@ int cms_main(int argc, char **argv)
|
||||||
if (rr_from == NULL
|
if (rr_from == NULL
|
||||||
&& (rr_from = sk_OPENSSL_STRING_new_null()) == NULL)
|
&& (rr_from = sk_OPENSSL_STRING_new_null()) == NULL)
|
||||||
goto end;
|
goto end;
|
||||||
sk_OPENSSL_STRING_push(rr_from, opt_arg());
|
if (sk_OPENSSL_STRING_push(rr_from, opt_arg()) <= 0)
|
||||||
|
goto end;
|
||||||
break;
|
break;
|
||||||
case OPT_RR_TO:
|
case OPT_RR_TO:
|
||||||
if (rr_to == NULL
|
if (rr_to == NULL
|
||||||
&& (rr_to = sk_OPENSSL_STRING_new_null()) == NULL)
|
&& (rr_to = sk_OPENSSL_STRING_new_null()) == NULL)
|
||||||
goto end;
|
goto end;
|
||||||
sk_OPENSSL_STRING_push(rr_to, opt_arg());
|
if (sk_OPENSSL_STRING_push(rr_to, opt_arg()) <= 0)
|
||||||
|
goto end;
|
||||||
break;
|
break;
|
||||||
case OPT_PRINT:
|
case OPT_PRINT:
|
||||||
noout = print = 1;
|
noout = print = 1;
|
||||||
|
@ -585,13 +587,15 @@ int cms_main(int argc, char **argv)
|
||||||
if (sksigners == NULL
|
if (sksigners == NULL
|
||||||
&& (sksigners = sk_OPENSSL_STRING_new_null()) == NULL)
|
&& (sksigners = sk_OPENSSL_STRING_new_null()) == NULL)
|
||||||
goto end;
|
goto end;
|
||||||
sk_OPENSSL_STRING_push(sksigners, signerfile);
|
if (sk_OPENSSL_STRING_push(sksigners, signerfile) <= 0)
|
||||||
|
goto end;
|
||||||
if (keyfile == NULL)
|
if (keyfile == NULL)
|
||||||
keyfile = signerfile;
|
keyfile = signerfile;
|
||||||
if (skkeys == NULL
|
if (skkeys == NULL
|
||||||
&& (skkeys = sk_OPENSSL_STRING_new_null()) == NULL)
|
&& (skkeys = sk_OPENSSL_STRING_new_null()) == NULL)
|
||||||
goto end;
|
goto end;
|
||||||
sk_OPENSSL_STRING_push(skkeys, keyfile);
|
if (sk_OPENSSL_STRING_push(skkeys, keyfile) <= 0)
|
||||||
|
goto end;
|
||||||
keyfile = NULL;
|
keyfile = NULL;
|
||||||
}
|
}
|
||||||
signerfile = opt_arg();
|
signerfile = opt_arg();
|
||||||
|
@ -609,12 +613,14 @@ int cms_main(int argc, char **argv)
|
||||||
if (sksigners == NULL
|
if (sksigners == NULL
|
||||||
&& (sksigners = sk_OPENSSL_STRING_new_null()) == NULL)
|
&& (sksigners = sk_OPENSSL_STRING_new_null()) == NULL)
|
||||||
goto end;
|
goto end;
|
||||||
sk_OPENSSL_STRING_push(sksigners, signerfile);
|
if (sk_OPENSSL_STRING_push(sksigners, signerfile) <= 0)
|
||||||
|
goto end;
|
||||||
signerfile = NULL;
|
signerfile = NULL;
|
||||||
if (skkeys == NULL
|
if (skkeys == NULL
|
||||||
&& (skkeys = sk_OPENSSL_STRING_new_null()) == NULL)
|
&& (skkeys = sk_OPENSSL_STRING_new_null()) == NULL)
|
||||||
goto end;
|
goto end;
|
||||||
sk_OPENSSL_STRING_push(skkeys, keyfile);
|
if (sk_OPENSSL_STRING_push(skkeys, keyfile) <= 0)
|
||||||
|
goto end;
|
||||||
}
|
}
|
||||||
keyfile = opt_arg();
|
keyfile = opt_arg();
|
||||||
break;
|
break;
|
||||||
|
@ -668,7 +674,8 @@ int cms_main(int argc, char **argv)
|
||||||
key_param->next = nparam;
|
key_param->next = nparam;
|
||||||
key_param = nparam;
|
key_param = nparam;
|
||||||
}
|
}
|
||||||
sk_OPENSSL_STRING_push(key_param->param, opt_arg());
|
if (sk_OPENSSL_STRING_push(key_param->param, opt_arg()) <= 0)
|
||||||
|
goto end;
|
||||||
break;
|
break;
|
||||||
case OPT_V_CASES:
|
case OPT_V_CASES:
|
||||||
if (!opt_verify(o, vpm))
|
if (!opt_verify(o, vpm))
|
||||||
|
@ -755,12 +762,14 @@ int cms_main(int argc, char **argv)
|
||||||
if (sksigners == NULL
|
if (sksigners == NULL
|
||||||
&& (sksigners = sk_OPENSSL_STRING_new_null()) == NULL)
|
&& (sksigners = sk_OPENSSL_STRING_new_null()) == NULL)
|
||||||
goto end;
|
goto end;
|
||||||
sk_OPENSSL_STRING_push(sksigners, signerfile);
|
if (sk_OPENSSL_STRING_push(sksigners, signerfile) <= 0)
|
||||||
|
goto end;
|
||||||
if (skkeys == NULL && (skkeys = sk_OPENSSL_STRING_new_null()) == NULL)
|
if (skkeys == NULL && (skkeys = sk_OPENSSL_STRING_new_null()) == NULL)
|
||||||
goto end;
|
goto end;
|
||||||
if (keyfile == NULL)
|
if (keyfile == NULL)
|
||||||
keyfile = signerfile;
|
keyfile = signerfile;
|
||||||
sk_OPENSSL_STRING_push(skkeys, keyfile);
|
if (sk_OPENSSL_STRING_push(skkeys, keyfile) <= 0)
|
||||||
|
goto end;
|
||||||
}
|
}
|
||||||
if (sksigners == NULL) {
|
if (sksigners == NULL) {
|
||||||
BIO_printf(bio_err, "No signer certificate specified\n");
|
BIO_printf(bio_err, "No signer certificate specified\n");
|
||||||
|
|
|
@ -352,10 +352,12 @@ int engine_main(int argc, char **argv)
|
||||||
test_avail++;
|
test_avail++;
|
||||||
break;
|
break;
|
||||||
case OPT_PRE:
|
case OPT_PRE:
|
||||||
sk_OPENSSL_STRING_push(pre_cmds, opt_arg());
|
if (sk_OPENSSL_STRING_push(pre_cmds, opt_arg()) <= 0)
|
||||||
|
goto end;
|
||||||
break;
|
break;
|
||||||
case OPT_POST:
|
case OPT_POST:
|
||||||
sk_OPENSSL_STRING_push(post_cmds, opt_arg());
|
if (sk_OPENSSL_STRING_push(post_cmds, opt_arg()) <= 0)
|
||||||
|
goto end;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -320,7 +320,8 @@ int pkcs12_main(int argc, char **argv)
|
||||||
if (canames == NULL
|
if (canames == NULL
|
||||||
&& (canames = sk_OPENSSL_STRING_new_null()) == NULL)
|
&& (canames = sk_OPENSSL_STRING_new_null()) == NULL)
|
||||||
goto end;
|
goto end;
|
||||||
sk_OPENSSL_STRING_push(canames, opt_arg());
|
if (sk_OPENSSL_STRING_push(canames, opt_arg()) <= 0)
|
||||||
|
goto end;
|
||||||
break;
|
break;
|
||||||
case OPT_IN:
|
case OPT_IN:
|
||||||
infile = opt_arg();
|
infile = opt_arg();
|
||||||
|
|
18
apps/smime.c
18
apps/smime.c
|
@ -312,13 +312,15 @@ int smime_main(int argc, char **argv)
|
||||||
if (sksigners == NULL
|
if (sksigners == NULL
|
||||||
&& (sksigners = sk_OPENSSL_STRING_new_null()) == NULL)
|
&& (sksigners = sk_OPENSSL_STRING_new_null()) == NULL)
|
||||||
goto end;
|
goto end;
|
||||||
sk_OPENSSL_STRING_push(sksigners, signerfile);
|
if (sk_OPENSSL_STRING_push(sksigners, signerfile) <= 0)
|
||||||
|
goto end;
|
||||||
if (keyfile == NULL)
|
if (keyfile == NULL)
|
||||||
keyfile = signerfile;
|
keyfile = signerfile;
|
||||||
if (skkeys == NULL
|
if (skkeys == NULL
|
||||||
&& (skkeys = sk_OPENSSL_STRING_new_null()) == NULL)
|
&& (skkeys = sk_OPENSSL_STRING_new_null()) == NULL)
|
||||||
goto end;
|
goto end;
|
||||||
sk_OPENSSL_STRING_push(skkeys, keyfile);
|
if (sk_OPENSSL_STRING_push(skkeys, keyfile) <= 0)
|
||||||
|
goto end;
|
||||||
keyfile = NULL;
|
keyfile = NULL;
|
||||||
}
|
}
|
||||||
signerfile = opt_arg();
|
signerfile = opt_arg();
|
||||||
|
@ -343,12 +345,14 @@ int smime_main(int argc, char **argv)
|
||||||
if (sksigners == NULL
|
if (sksigners == NULL
|
||||||
&& (sksigners = sk_OPENSSL_STRING_new_null()) == NULL)
|
&& (sksigners = sk_OPENSSL_STRING_new_null()) == NULL)
|
||||||
goto end;
|
goto end;
|
||||||
sk_OPENSSL_STRING_push(sksigners, signerfile);
|
if (sk_OPENSSL_STRING_push(sksigners, signerfile) <= 0)
|
||||||
|
goto end;
|
||||||
signerfile = NULL;
|
signerfile = NULL;
|
||||||
if (skkeys == NULL
|
if (skkeys == NULL
|
||||||
&& (skkeys = sk_OPENSSL_STRING_new_null()) == NULL)
|
&& (skkeys = sk_OPENSSL_STRING_new_null()) == NULL)
|
||||||
goto end;
|
goto end;
|
||||||
sk_OPENSSL_STRING_push(skkeys, keyfile);
|
if (sk_OPENSSL_STRING_push(skkeys, keyfile) <= 0)
|
||||||
|
goto end;
|
||||||
}
|
}
|
||||||
keyfile = opt_arg();
|
keyfile = opt_arg();
|
||||||
break;
|
break;
|
||||||
|
@ -421,12 +425,14 @@ int smime_main(int argc, char **argv)
|
||||||
if (sksigners == NULL
|
if (sksigners == NULL
|
||||||
&& (sksigners = sk_OPENSSL_STRING_new_null()) == NULL)
|
&& (sksigners = sk_OPENSSL_STRING_new_null()) == NULL)
|
||||||
goto end;
|
goto end;
|
||||||
sk_OPENSSL_STRING_push(sksigners, signerfile);
|
if (sk_OPENSSL_STRING_push(sksigners, signerfile) <= 0)
|
||||||
|
goto end;
|
||||||
if (!skkeys && (skkeys = sk_OPENSSL_STRING_new_null()) == NULL)
|
if (!skkeys && (skkeys = sk_OPENSSL_STRING_new_null()) == NULL)
|
||||||
goto end;
|
goto end;
|
||||||
if (!keyfile)
|
if (!keyfile)
|
||||||
keyfile = signerfile;
|
keyfile = signerfile;
|
||||||
sk_OPENSSL_STRING_push(skkeys, keyfile);
|
if (sk_OPENSSL_STRING_push(skkeys, keyfile) <= 0)
|
||||||
|
goto end;
|
||||||
}
|
}
|
||||||
if (sksigners == NULL) {
|
if (sksigners == NULL) {
|
||||||
BIO_printf(bio_err, "No signer certificate specified\n");
|
BIO_printf(bio_err, "No signer certificate specified\n");
|
||||||
|
|
Loading…
Reference in New Issue