aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--sm/minip12.c2
-rw-r--r--sm/t-minip12.c3
-rw-r--r--tests/gpgscm/ffi.c23
-rw-r--r--tools/gpgconf-comp.c1
-rw-r--r--tools/gpgtar-extract.c1
-rw-r--r--tools/gpgtar-list.c1
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)