aboutsummaryrefslogtreecommitdiffstats
path: root/gpgscm/main.c (unfollow)
Commit message (Collapse)AuthorFilesLines
2019-01-04core: New functions gpgrt_abort and gpgrt_add_emergency_cleanup.Werner Koch1-1/+0
* src/init.c (emergency_cleanup_list): New gloabl var. (_gpgrt_add_emergency_cleanup): New. (_gpgrt_abort): New. Repalce all calls to abort by this. Also replace all assert by either log_assert or a stderr output followed by a _gpgrt_abort. (run_emergency_cleanup): New. * src/visibility.c (gpgrt_add_emergency_cleanup): New public API. (gpgrt_abort): New public API. -- Libgcrypt uses its own assert function which makes sure to terminate the secure memory. This is safe as log as an assert is triggered internally in Libgcrypt. GnuPG runs emergency cleanup handlers right before log_fatal etc to tell Libgcrypt to terminate the secure memory. With the move of the logging function to gpgrt in gnupg 2.3 this did not anymore. Thus we now provide a mechanism in gpgrt to do right that. Eventually Libgcrypt can also make use of this. What this does not handle are calls to abort or failed asserts in external libraries or in libc. We can't do anything about it in a library because a library may not setup signal handlers. Signed-off-by: Werner Koch <[email protected]>
2017-11-28gpgscm: Some adjustments for use in gpgrt.Werner Koch1-61/+55
* gpgscm/Makefile.am: Remove cruft leftover from GnuPG. Link to the just build libgpg-error. * gpgscm/private.h: Include gpgrt.h and provide i18n macros. (xfree, xtrymalloc, xtrycalloc, xtryrealloc): New macros. (xmalloc, xstrdup): New inline functions. * gpgscm/main.c: Remove inclusion of gcrypt.h and gpg-error.h. Remove all other gnupg specific headers. (opts, parse_arguments): Temporary comment out. (main): Adjust for use with gpgrt. Temporary comment out some stuff. * gpgscm/ffi-private.h: Include local gpgrt.h instead of gpg-error.h. * gpgscm/ffi.h: Ditto. * gpgscm/ffi.c: Remove gpg-error.h and headers from GnuPG. (do_getenv): Use gpgrt_getenv. (do_setenv): Use gpgrt_setenv. (do_mkdtemp): Temporary return an error. (unlink_recursively): Use gpgrt_bsprintf. (do_getcwd): Use gpgrt_getcwd. (do_mkdir): Use gpgrt_mkdir. (do_get_isotime): Temporary return an error. (do_get_time): Directly use time(). -- Note that this does not yet compile because the spawn functions from GnuPG are missing. There are two other problems as well: - We don't have GnuPG's isotime fucntions. We need to see whether we want to support them in gpgrt. That might be useful in libksba. - gpgrt_mkdtemp does not work. We do not want to link to Libgcrypt, which is the way mkdtemp was written for GnuPG. We should get a more straight implementation. Signed-off-by: Werner Koch <[email protected]>
2017-10-05gpgscm: Change license from GPLv3+ to LGPLv2.1+Werner Koch1-13/+12
-- All changes to TinySCHEME were done by employees of g10 Code GmbH and some minor things by a contractor. Signed-off-by: Werner Koch <[email protected]>
2017-10-05gpgscm: Move files to a gpgscm subdirectory.Werner Koch1-0/+0
-- Note that we used git filter-branch --subdirectory-filter tests/gpgscm in gnupg master to filter out the gpgscm part. This commit merely moves these files to a subdirectory which will be used in libgpg-error for gpgscm. Signed-off-by: Werner Koch <[email protected]>
2017-07-18gpgscm,w32: Fix testing for absolute paths.Justus Winter1-2/+15
* tests/gpgscm/main.c (path_absolute_p): New function. (load): Use new function. Signed-off-by: Justus Winter <[email protected]>
2017-07-13gpgscm: Make loading of modules less verbose.Justus Winter1-1/+1
* tests/gpgscm/main.c (load): Increase logging threshold. Signed-off-by: Justus Winter <[email protected]>
2017-04-24gpgscm: Emit JUnit-style XML reports.Justus Winter1-0/+2
* tests/gpgscm/Makefile.am (EXTRA_DIST): Add new file. * tests/gpgscm/lib.scm (string-translate): New function. * tests/gpgscm/main.c (main): Load new file. * tests/gpgscm/tests.scm (dirname): New function. (test-pool): Record execution times, emit XML report. (test): Record execution times, record log file name, emit XML report. (run-tests-parallel): Write XML report. (run-tests-sequential): Likewise. * tests/gpgscm/xml.scm: New file. * tests/gpgme/Makefile.am (CLEANFILES): Add 'report.xml'. * tests/gpgsm/Makefile.am: Likewise. * tests/migrations/Makefile.am: Likewise. * tests/openpgp/Makefile.am: Likewise. Signed-off-by: Justus Winter <[email protected]>
2017-04-11tests: Move common functionality.Justus Winter1-0/+2
* tests/openpgp/defs.scm (with-home-directory, with-ephemeral-home-directory): Move... * tests/gpgscm/gnupg.scm: ... to this new file. * tests/gpgscm/main.c (main): Load the new file. Signed-off-by: Justus Winter <[email protected]>
2017-04-10gpgscm: Mmap script files.Justus Winter1-1/+40
* tests/gpgscm/main.c (load): Try to mmap the script. * tests/gpgscm/scheme.c (scheme_load_memory): New function, a generalization of 'scheme_load_string'. * tests/gpgscm/scheme.h (scheme_load_memory): New prototype. Signed-off-by: Justus Winter <[email protected]>
2017-03-07More change for common.NIIBE Yutaka1-1/+1
* g10, scd, test, tools: Follow the change of removal of -Icommon. Signed-off-by: NIIBE Yutaka <[email protected]>
2017-02-21Clean up word replication.Yuri Chornoivan1-1/+1
-- This fixes extra word repetitions (like "the the" or "is is") in the code and docs. Signed-off-by: Daniel Kahn Gillmor <[email protected]>
2016-12-08gpgscm: Better error reporting.Justus Winter1-8/+13
* tests/gpgscm/ffi.scm: Move the customized exception handling and atexit logic... * tests/gpgscm/init.scm: ... here. (throw): Record the current history. (throw'): New function that is history-aware. (rethrow): New function. (*error-hook*): Use the new throw'. * tests/gpgscm/main.c (load): Fix error handling. (main): Save and use the 'sc->retcode' as exit code. * tests/gpgscm/repl.scm (repl): Print call history. * tests/gpgscm/scheme.c (_Error_1): Make a snapshot of the history, use it to provide a accurate location of the expression causing the error at runtime, and hand the history trace to the '*error-hook*'. (opexe_5): Tag all lists at parse time with the current location. * tests/gpgscm/tests.scm: Update calls to 'throw', use 'rethrow'. Signed-off-by: Justus Winter <[email protected]>
2016-11-05Change all http://www.gnu.org in license notices to https://Werner Koch1-1/+1
--
2016-11-04gpgscm: Implement 'atexit'.Justus Winter1-0/+1
* tests/gpgscm/ffi.scm (throw): Run *run-atexit-handlers* when terminating the interpreter. (*atexit-handlers*): New variable. (*run-atexit-handlers*): New function. (atexit): Likewise. * tests/gpgscm/main.c (main): Run *run-atexit-handlers* at normal interpreter shutdown. Signed-off-by: Justus Winter <[email protected]>
2016-09-19tests: Use descriptive temporary file names.Justus Winter1-1/+2
* tests/gpgscm/ffi.c (do_get_isotime): New function. (ffi_init): Add parameter 'scriptname', bind new function and scriptname. * tests/gpgscm/ffi.h (ffi_init): Update prototype. * tests/gpgscm/main.c (main): Hand in the script name. * tests/gpgscm/tests.scm (mkdtemp): Use current time and script name for the names of temporary directories. Signed-off-by: Justus Winter <[email protected]>
2016-09-19gpgscm: Fix gcrypt version check.Werner Koch1-1/+1
* tests/gpgscm/main.c (main): Check against required and not installed version. Signed-off-by: Werner Koch <[email protected]>
2016-09-06gpgscm: Fix detection of unbalanced parenthesis.Justus Winter1-0/+8
* tests/gpgscm/main.c (load): Print error message. * tests/gpgscm/scheme.c (opexe_0): Correctly report nesting level when loading files. Signed-off-by: Justus Winter <[email protected]>
2016-08-12Call log_set_prefix() with human-readable labels.Daniel Kahn Gillmor1-1/+1
* agent/preset-passphrase.c, agent/protect-tool.c, dirmngr/dirmngr.c * dirmngr/t-http.c, g10/gpg.c, g10/gpgv.c, g13/g13-syshelp.c * g13/g13.c, kbx/kbxutil.c, scd/scdaemon.c, sm/gpgsm.c * tests/gpgscm/main.c, tools/gpg-check-pattern.c * tools/gpg-connect-agent.c, tools/gpgconf.c, tools/gpgtar.c * tools/symcryptrun.c: Invoke log_set_prefix() with human-readable labels. -- Some invocations of log_set_prefix() were done with raw numeric values instead of values that humans can understand. Use symbolic representations instead of numeric for better readability. Signed-off-by: Daniel Kahn Gillmor <[email protected]>
2016-06-30gpgscm: Use the allocator from libgcrypt.Justus Winter1-1/+2
* tests/gpgscm/main.c (main): Use the allocator from libgcrypt. Signed-off-by: Justus Winter <[email protected]>
2016-06-28gpgscm: Fix memory leaks.Justus Winter1-0/+1
* tests/gpgscm/ffi-private.h (ffi_schemify_name): Fix prototype. (ffi_define_function_name): Free schemified name. (ffi_define_function): Likewise. (ffi_define_constant): Likewise. (ffi_define_variable_pointer): Likewise. * tests/gpgscm/ffi.c (do_wait_processes): Free arrays. (ffi_schemify_name): Fix type. * tests/gpgscm/main.c (main): Free 'sc'. Signed-off-by: Justus Winter <[email protected]>
2016-06-17tests/gpgscm: Add a TinySCHEME-based test driver.Justus Winter1-0/+286
* configure.ac: Add new component. * tests/Makefile.am: Likewise. * tests/gpgscm/Makefile.am: New file. * tests/gpgscm/ffi-private.h: Likewise. * tests/gpgscm/ffi.c: Likewise. * tests/gpgscm/ffi.h: Likewise. * tests/gpgscm/ffi.scm: Likewise. * tests/gpgscm/lib.scm: Likewise. * tests/gpgscm/main.c: Likewise. * tests/gpgscm/private.h: Likewise. * tests/gpgscm/repl.scm: Likewise. * tests/gpgscm/scheme-config.h: Likewise. * tests/gpgscm/t-child.c: Likewise. * tests/gpgscm/t-child.scm: Likewise. * tests/gpgscm/tests.scm: Likewise. Signed-off-by: Justus Winter <[email protected]>