diff options
author | NIIBE Yutaka <[email protected]> | 2025-05-28 06:50:10 +0000 |
---|---|---|
committer | NIIBE Yutaka <[email protected]> | 2025-05-28 06:50:10 +0000 |
commit | 29bc14f56f6430294f225b6744012ab1f5df62e6 (patch) | |
tree | 295c3151a40e1303e499d68112f18efe9f2be195 | |
parent | agent: Allow building under Cygwin. (diff) | |
download | gnupg-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]>
-rw-r--r-- | sm/minip12.c | 2 | ||||
-rw-r--r-- | sm/t-minip12.c | 3 | ||||
-rw-r--r-- | tests/gpgscm/ffi.c | 23 | ||||
-rw-r--r-- | tools/gpgconf-comp.c | 1 | ||||
-rw-r--r-- | tools/gpgtar-extract.c | 1 | ||||
-rw-r--r-- | tools/gpgtar-list.c | 1 |
6 files changed, 23 insertions, 8 deletions
diff --git a/sm/minip12.c b/sm/minip12.c index 34ba1a53b..c8a46b017 100644 --- a/sm/minip12.c +++ b/sm/minip12.c @@ -2027,7 +2027,7 @@ p12_parse (const unsigned char *buffer, size_t length, const char *pw, if ((err = tlv_expect_octet_string (tlv, &data, &datalen))) goto bailout; - tmptlv = tlv_parser_new (data, datalen, opt_verbose, NULL); + tmptlv = tlv_parser_new (data, datalen, opt_verbose, tlv); if (!tmptlv) { err = gpg_error_from_syserror (); diff --git a/sm/t-minip12.c b/sm/t-minip12.c index cc2fe2bb6..8c7ff4a9b 100644 --- a/sm/t-minip12.c +++ b/sm/t-minip12.c @@ -433,7 +433,8 @@ one_file (const char *name, const char *pass) gcry_free (tmpbuf); } } - } + p12_parse_free_kparms (result); + } if (badpass) log_error ("Bad password given?\n"); 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); } diff --git a/tools/gpgconf-comp.c b/tools/gpgconf-comp.c index 433bf712c..862ebd16d 100644 --- a/tools/gpgconf-comp.c +++ b/tools/gpgconf-comp.c @@ -2162,6 +2162,7 @@ retrieve_options_from_program (gc_component_id_t component, int only_installed) } } + gpgrt_argparse (NULL, &pargs, NULL); /* Release internal state. */ xfree (line); xfree (twopartconfig_name); } diff --git a/tools/gpgtar-extract.c b/tools/gpgtar-extract.c index 86e9c1812..37c5996c1 100644 --- a/tools/gpgtar-extract.c +++ b/tools/gpgtar-extract.c @@ -559,6 +559,7 @@ gpgtar_extract (const char *filename, int decrypt) } leave: + gpgrt_process_release (proc); notextracted = tarinfo->skipped_badname; notextracted += tarinfo->skipped_suspicious; notextracted += tarinfo->skipped_symlinks; diff --git a/tools/gpgtar-list.c b/tools/gpgtar-list.c index 2ed5aa873..ef851d8f1 100644 --- a/tools/gpgtar-list.c +++ b/tools/gpgtar-list.c @@ -593,6 +593,7 @@ gpgtar_list (const char *filename, int decrypt) } leave: + gpgrt_process_release (proc); free_strlist (extheader); xfree (header); if (stream != es_stdin) |