Commit 5219d3dd authored by Dr. Stephen Henson's avatar Dr. Stephen Henson
Browse files

Fix free errors in ocsp utility.

Keep copy of any host, path and port values allocated by
OCSP_parse_url and free as necessary.
parent 476830fd
Loading
Loading
Loading
Loading
+16 −6
Original line number Diff line number Diff line
@@ -127,6 +127,7 @@ int MAIN(int argc, char **argv)
	ENGINE *e = NULL;
	char **args;
	char *host = NULL, *port = NULL, *path = "/";
	char *thost = NULL, *tport = NULL, *tpath = NULL;
	char *reqin = NULL, *respin = NULL;
	char *reqout = NULL, *respout = NULL;
	char *signfile = NULL, *keyfile = NULL;
@@ -206,6 +207,12 @@ int MAIN(int argc, char **argv)
			}
		else if (!strcmp(*args, "-url"))
			{
			if (thost)
				OPENSSL_free(thost);
			if (tport)
				OPENSSL_free(tport);
			if (tpath)
				OPENSSL_free(tpath);
			if (args[1])
				{
				args++;
@@ -214,6 +221,9 @@ int MAIN(int argc, char **argv)
					BIO_printf(bio_err, "Error parsing URL\n");
					badarg = 1;
					}
				thost = host;
				tport = port;
				tpath = path;
				}
			else badarg = 1;
			}
@@ -963,12 +973,12 @@ end:
	sk_X509_pop_free(verify_other, X509_free);
	sk_CONF_VALUE_pop_free(headers, X509V3_conf_free);

	if (use_ssl != -1)
		{
		OPENSSL_free(host);
		OPENSSL_free(port);
		OPENSSL_free(path);
		}
	if (thost)
		OPENSSL_free(thost);
	if (tport)
		OPENSSL_free(tport);
	if (tpath)
		OPENSSL_free(tpath);

	OPENSSL_EXIT(ret);
}