aboutsummaryrefslogtreecommitdiffstats
path: root/tests/gpgscm/ffi.c
diff options
context:
space:
mode:
authorNIIBE Yutaka <[email protected]>2025-05-28 06:50:10 +0000
committerNIIBE Yutaka <[email protected]>2025-05-28 06:50:10 +0000
commit29bc14f56f6430294f225b6744012ab1f5df62e6 (patch)
tree295c3151a40e1303e499d68112f18efe9f2be195 /tests/gpgscm/ffi.c
parentagent: Allow building under Cygwin. (diff)
downloadgnupg-29bc14f56f6430294f225b6744012ab1f5df62e6.tar.gz
gnupg-29bc14f56f6430294f225b6744012ab1f5df62e6.zip
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 <[email protected]>
Diffstat (limited to 'tests/gpgscm/ffi.c')
-rw-r--r--tests/gpgscm/ffi.c23
1 files changed, 17 insertions, 6 deletions
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);
}