From 29bc14f56f6430294f225b6744012ab1f5df62e6 Mon Sep 17 00:00:00 2001 From: NIIBE Yutaka Date: Wed, 28 May 2025 15:50:10 +0900 Subject: gpgsm,tests,tools: Fix memory leaks. * sm/minip12.c (p12_parse): Fix creating new TLV with old TLV. * sm/t-minip12.c (one_file): Release RESULT. * tests/gpgscm/ffi.c (do_process_wait): Call gpgrt_process_release. * tools/gpgconf-comp.c (retrieve_options_from_program): Release PARGS. * tools/gpgtar-extract.c (gpgtar_extract): Release PROC on leave. * tools/gpgtar-list.c (gpgtar_list): Release PROC on leave. -- Signed-off-by: NIIBE Yutaka --- tests/gpgscm/ffi.c | 23 +++++++++++++++++------ 1 file changed, 17 insertions(+), 6 deletions(-) (limited to 'tests') diff --git a/tests/gpgscm/ffi.c b/tests/gpgscm/ffi.c index cdb794ad0..8cfc92928 100644 --- a/tests/gpgscm/ffi.c +++ b/tests/gpgscm/ffi.c @@ -1222,12 +1222,23 @@ do_process_wait (scheme *sc, pointer args) FFI_ARG_OR_RETURN (sc, struct proc_object_box *, box, proc, args); FFI_ARG_OR_RETURN (sc, int, hang, bool, args); FFI_ARGS_DONE_OR_RETURN (sc, args); - err = gpgrt_process_wait (box->proc, hang); - if (!err) - err = gpgrt_process_ctl (box->proc, GPGRT_PROCESS_GET_EXIT_ID, &retcode); - if (err == GPG_ERR_TIMEOUT) - err = 0; - + if (!box->proc) + { + if (verbose) + fprintf (stderr, "caught already (%p)\n", box); + } + else + { + err = gpgrt_process_wait (box->proc, hang); + if (!err) + { + err = gpgrt_process_ctl (box->proc, GPGRT_PROCESS_GET_EXIT_ID, &retcode); + gpgrt_process_release (box->proc); + box->proc = NULL; + } + if (err == GPG_ERR_TIMEOUT) + err = 0; + } FFI_RETURN_INT (sc, retcode); } -- cgit v1.2.3