aboutsummaryrefslogtreecommitdiffstats
path: root/src (unfollow)
Commit message (Collapse)AuthorFilesLines
2025-04-17Release 1.54libgpg-error-1.54gpgrt-1.54Werner Koch1-1/+1
2025-04-16w32: Fix extended length path handling for UNC specified files.Werner Koch1-4/+26
* src/sysutils.c (_gpgrt_fname_to_wchar): Fix the extended length path support for UNC file names. Also add an envvar to disable the entire extended length path support. -- GnuPG-bug-id: 5754 Fixes-commit: a4a692fcf1ed128693ec6d64d5e3163775aad10b With the last fix we fixed the extended length path support but it also truned outa wrong implementaion of it for UNC. Before the previous patch the UNC support was already wrong but it exhibited itself only when the requested UNC was already long. The patch then kicked in the support more often and in particular always if an UNC was used (due to the new checking for backslashes and not just the length). To avoid further surprises we now have an envvar to disable that support entirely. But if should be correct now ;-).
2025-04-16Add command --fopen to gpg-error to help testingWerner Koch1-2/+22
* src/gpg-error.c (main): Implement command --fopen. Also ignore log file settings from the Registry. -- To test estream functions it is useful to have commands to run some of them. Here we use gpgrt_fopen (fname, "r,sysopen") for the --fopen command.
2025-04-09Use gpgrt_stream_t for the API of gpgrt_nvc_*.NIIBE Yutaka1-2/+2
* src/gpg-error.h.in (gpgrt_nvc_parse): Use gpgrt_stream_t. (gpgrt_nvc_write): Likewise. -- For applications with no GPGRT_ENABLE_ES_MACROS, it's good not to use estream_t here. Fixes-commit: 7ec1f27b60eec95297c5267ab5ebbdb73b263c3f Signed-off-by: NIIBE Yutaka <[email protected]>
2025-04-08Release 1.52libgpg-error-1.52gpgrt-1.52Werner Koch3-3/+7
2025-04-07argparse: Make getreg meta command work on Unix.Werner Koch1-7/+93
* src/argparse.c (_gpgrt_argparse_internal_s): Add fields no_registry and registry. (initialize): Init them. (emulated_registry_lookup): New. (handle_meta_getenv): Use it. * tests/etc/t-argparse.conf: Add a getreg meta command. * tests/t-argparse.c (opt): Add a disable-akr command. * tests/etc/Registry: New.
2025-04-07Add a section mode to the name-value functions.Werner Koch2-9/+74
* src/gpg-error.h.in (GPGRT_NVC_SECTION): New. * src/name-value.c (_gpgrt_name_value_container): Add section_mode. (_gpgrt_nvc_new): Set it. (_gpgrt_nvc_get_flag): Return it. (valid_name): Add arg sectionmode and change callers. (do_nvc_parse): Parse section names in section mode. (_gpgrt_nvc_write): Return an error in section mode.
2025-04-07Allow name-value lookup w/o a trailing colon for the name.Werner Koch1-24/+59
* src/name-value.c (_gpgrt_name_value_entry): Add field namelen. (ascii_memcasecmp): New. (same_name_p): New. (valid_name): Strip the colon and return the length. (do_nvc_add): Set namelen. (_gpgrt_nvc_lookup): Simplify. * tests/t-name-value.c (test_getting_values): Add some extra tests. -- The requirement for a colon after the name is too cumbersome.
2025-04-07New public API gpgrt_nvc_* and gpgrt_nve_*Werner Koch8-4/+1155
* src/name-value.c: New. * tests/t-name-value.c: New. * src/gpg-error.def.in: Add new functions. * src/gpg-error.h.in: Ditto. * src/gpg-error.vers: Ditto. * src/visibility.c: Ditto. * src/visibility.h: Ditto. -- These new functions were originally added to GnuPG taken from current GnuPG master. The license has been changed from (LGPL-3.0-or-later OR GPL-2.0-or-later) to LGPL-2.1-or-later: Everything was written by me or employees/contractors of g10 Code GmbH. The private key handling has been removed because that would require Libgcrypt functions. Some functions are changed.
2025-04-07Update the copyright notice.Werner Koch1-1/+1
* configure.ac (GPGRT_STD_COPYRIGHT_LINE): New. * src/gpg-error.c (my_strusage): Use it here.
2025-04-04w32: Improve the detection of the need for a \\?\ prefixWerner Koch1-3/+5
* src/sysutils.c (_gpgrt_fname_to_wchar): Use the no-max-path prefix for shorter files and for filenames with path separators. -- Depending on the current directory the old threshold of 230 was to larger. Now we use a lower limit which should handle most standard file names w/o the need for the prefix. We also always do this if the requested file includes a directory part. Updates-commit: 32dad4e4135f0bdc436ed684da753d4b0cdb0ea1
2025-04-01New public API gpgrt_strlist_*Werner Koch10-212/+353
* src/strlist.c: Rename all functions to have a _gpgrt_strlist prefix. (append_to_strlist2, strlist_length): Remove. (_gpgrt_strlist_free): rtake care of the wipe flag. (_gpgrt_strlist_add): Add a flags arg to use it for prepend and append. Return an error on failure. (_gpgrt_strlist_tokenize): Ditto. (_gpgrt_strlist_copy): Chnage to return an error on failure. (_gpgrt_strlist_pop): Ditto. * src/Makefile.am (libgpg_error_la_SOURCES): Add strlist.c. * src/argparse.c (trim_spaces): Move to ... * src/stringutils.c (_gpgrt_trim_spaces): here and rename. * src/visibility.c: Add wrappers for all exported functions. * src/visibility.h: MArk exported functions as visisble. * src/gpg-error.def.in: Export new functions * src/gpg-error.vers: Ditto. * src/gpg-error.h.in (GPGRT_STRLIST_APPEND): New. (GPGRT_STRLIST_WIPE): New. (gpgrt_strlist_free): New. (gpgrt_strlist_add): New. (gpgrt_strlist_tokenize): New. (gpgrt_strlist_copy): New. (gpgrt_strlist_rev): New. (gpgrt_strlist_prev): New. (gpgrt_strlist_last): New. (gpgrt_strlist_pop): New. (gpgrt_strlist_find): New. (gpgrt_strlist_count): New inline function. -- This is a modified set of function as used by gpg for ages. These are quite useful functions and will be needed internally for some other planned features. The idea is to make their counterparts in gnupg wrapper around those new functions. After we have moved the secure memory stuff from Libgcrypt to here we can also implement a GPGRT_STRLICT_SECMEM flag to allow allocating strings here ion secure memory. For now we only have the WIPE flag which wipes the memory on free.
2025-03-28Add source file strlist.cWerner Koch1-0/+355
-- This is a copy from current GnuPG master. The license has been chnaged from (LGPL-3.0-or-later OR GPL-2.0-or-later) to LGPL-2.1-or-later: Almost everything was written by me or by employees of g10 Code GmbH. The only exception is strlist_pop 2002-06-14 David Shaw <[email protected]> * strgutil.c (pop_strlist): New function to pop the head off of a strlist. from gnupg-1.4/util/strgutil.c. However the function is to obvious to inhibit the license change. It needs to be changes anyway with followup commits. Signed-off-by: Werner Koch <[email protected]>
2025-02-06gpgrt-config: Append default directory to PKG_CONFIG_PATH.NIIBE Yutaka1-11/+6
* src/gpgrt-config.in: Fix initializing PKG_CONFIG_PATH. -- Signed-off-by: NIIBE Yutaka <[email protected]>
2025-01-22Skip gpg-error-config-test.sh for specific incompatible pkg-config.NIIBE Yutaka1-0/+9
* src/gpg-error-config-test.sh.in: Skip the test with pkgconf 1.8.0. -- Possibly, we need to skip with 1.9.0, 1.9.1, 1.9.2, and 1.9.3, too. pkgconf 1.8.1 (on Debian) works well. Signed-off-by: NIIBE Yutaka <[email protected]>
2025-01-14spawn: Care about closefrom/close call is interrupted.NIIBE Yutaka1-62/+54
* src/spawn-posix.c (closefrom_really): Handle interrupted call of closefrom. (close_except): Likewise for call of close. (_gpgrt_close_all_fds): Use closefrom_really and close_except. -- GnuPG-bug-id: 7478 Signed-off-by: NIIBE Yutaka <[email protected]>
2025-01-08spawn: Use closefrom when available.NIIBE Yutaka1-2/+46
* configure.ac (AC_CHECK_FUNCS): Check closefrom. * src/spawn-posix.c [HAVE_CLOSEFROM]: Use closefrom if possible. -- Signed-off-by: NIIBE Yutaka <[email protected]>
2024-12-12New Windows API gpgrt_w32_reg_get_string.Werner Koch6-8/+90
* src/w32-reg.c (_gpgrt_w32_reg_query_string): Implement a prefix for root and consider an empty string for root also HKCU. * src/visibility.c (gpgrt_w32_reg_get_string): New. * src/gpg-error.def.in: Add new function. * src/gpg-error.c (my_strusage): Print the Windows version (32 or 64 bit) of the binary. (main): New command --getreg. -- This function is already used internally and we have a similar function in GnuPG. It is much more convenient to work with this function. Also we can now pass the KEY_WOW64_32KEY andKEY_WOW64_64KEY flags to the registry read functions. For example !32key!HKLM\software\gnu\gnupg:ntdskeyserver returns the value using the KEY_WOW64_32KEY flag; likewise for !64key!. If !cross! is used the reversed flag of the binary type is used.
2024-11-14spawn:w32: Fix a memory leak on an error path.NIIBE Yutaka1-4/+4
* src/spawn-w32.c (spawn_detached): Make sure to release lpAttributeList. (_gpgrt_process_spawn): Likewise. -- Signed-off-by: NIIBE Yutaka <[email protected]>
2024-10-16spawn: Shorter identifier gpgrt_spawn_actions_set_env_rev.NIIBE Yutaka8-15/+15
* src/gpg-error.def.in: Rename to gpgrt_spawn_actions_set_env_rev. * src/gpg-error.h.in: Likewise. * src/gpg-error.vers: Likewise. * src/gpgrt-int.h: Likewise. * src/spawn-posix.c: Likewise. * src/spawn-w32.c: Likewise. * src/visibility.c: Likewise. * src/visibility.h: Likewise. * tests/t-spawn.c (run_test): Use gpgrt_spawn_actions_set_env_rev. -- Fixes-commit: 1860f6407f834b681c21f67db7236eaad161524c GnuPG-bug-id: 7307 Signed-off-by: NIIBE Yutaka <[email protected]>
2024-10-11spawn: Add new function to modify environment.NIIBE Yutaka8-8/+264
* src/gpg-error.def.in (gpgrt_spawn_actions_set_envchange): New. * src/gpg-error.vers (gpgrt_spawn_actions_set_envchange): New. * src/gpg-error.h.in (gpgrt_spawn_actions_set_envchange): New. * src/gpgrt-int.h (_gpgrt_spawn_actions_set_envchange): New. * src/spawn-posix.c (struct gpgrt_spawn_actions): New field ENVCHANGE. (prepare_environ): New. (my_exec): Take care of ENVCHANGE. (_gpgrt_spawn_actions_set_envchange): New. * src/spawn-w32.c (struct gpgrt_spawn_actions): New field ENVCHANGE. (prepare_env_block): New. (_gpgrt_spawn_actions_set_envchange): New. (spawn_detached, _gpgrt_process_spawn): Take care of ENVCHANGE. * src/visibility.c (gpgrt_spawn_actions_set_envchange): New. * src/visibility.h (gpgrt_spawn_actions_set_envchange): New. * tests/Makefile.am (TESTS): Add t-spawn. * tests/t-spawn.c: New. -- GnuPG-bug-id: 7307 Signed-off-by: NIIBE Yutaka <[email protected]>
2024-10-10w32: Fix releasing memory for UTF-8 text.NIIBE Yutaka1-8/+8
* src/spawn-w32.c (spawn_detached): Use _gpgrt_free_wchar. (_gpgrt_process_spawn): Likewise. -- Signed-off-by: NIIBE Yutaka <[email protected]>
2024-09-24estream: Let poll return an error for a closed fd.Werner Koch1-0/+5
* src/estream.c (_gpgrt_poll): Set got_nval.
2024-09-19posix: Fix forgotten _gpgrt_post_syscall on error path.NIIBE Yutaka1-0/+1
* src/spawn-posix.c (do_create_pipe_and_estream): Call post_syscall. -- Signed-off-by: NIIBE Yutaka <[email protected]>
2024-09-19posix: Fix memory leak for spawn.NIIBE Yutaka1-0/+1
* src/spawn-posix.c (spawn_detached): Free ARGV. -- Signed-off-by: NIIBE Yutaka <[email protected]>
2024-09-16w32:spawn: Remove unused function get_max_fds.NIIBE Yutaka1-21/+0
* src/spawn-w32.c (get_max_fds): Remove. -- Signed-off-by: NIIBE Yutaka <[email protected]>
2024-09-06w32: Clarify the environment block encoding.NIIBE Yutaka1-0/+3
* src/spawn-w32.c (_gpgrt_spawn_actions_set_envvars): It's an ASCII string. -- In future, we can extend it as UTF-8 string. When doing so, we will detect ASCII or utf-8, and if needed, convert it to Unicode wchar string with four-byte-zero terminated, and let the flag have CREATE_UNICODE_ENVIRONMENT. Signed-off-by: NIIBE Yutaka <[email protected]>
2024-08-27w32: Add GPGRT_PROCESS_ALLOW_SET_FG for gpgrt_process_spawn.NIIBE Yutaka2-2/+4
* src/gpg-error.h.in (GPGRT_PROCESS_ALLOW_SET_FG): New. * src/spawn-w32.c (_gpgrt_process_spawn): Support the flag. -- When GPGME will use gpgrt_process_spawn in future, this flag will be needed to support GPGME_SPAWN_ALLOW_SET_FG. Signed-off-by: NIIBE Yutaka <[email protected]>
2024-08-02w32: Allow initialization of new threads to utf8 mode.Werner Koch4-9/+35
* src/init.c (utf8_for_new_threads): New var. (_gpgrt_w32_utf8_for_new_threads): New func. (get_tls): Init the TLS utf8 flag from the new var. * src/w32-gettext.c (_gpg_w32_gettext_use_utf8): Implement new flag. -- GnuPG-bug-id: 7185
2024-07-04Put the full commit id into VERSION.Werner Koch1-2/+2
* autogen.sh <find-version>: Also print the full commit id. * configure.ac: Get the full commit id. Add it to VERSION. (BUILD_REVISION): Replace this ac_define by (BUILD_COMMITID): this. * src/version.c (cright_blurb): Use here.
2024-06-20core: Declare environ for macOS and others.Werner Koch1-0/+3
* src/spawn-posix.c (environ): Declare. -- GnuPG-bug-id: 7169
2024-06-19spawn: New flag GPGRT_PROCESS_NO_EUID_CHECKWerner Koch2-8/+13
* src/gpg-error.h.in (GPGRT_PROCESS_NO_EUID_CHECK): New. * src/spawn-posix.c (spawn_detached): Move check to ... (_gpgrt_process_spawn): here and skip if flag is set.
2024-06-19spawn: Keep struct definitions at the top of the file.Werner Koch2-34/+51
* src/spawn-posix.c: Move include and struct defs around. * src/spawn-w32.c: Move struct defs around.
2024-06-13Apply spell fix.NIIBE Yutaka1-1/+1
* src/gpg-error.m4: Apply spell fix from GnuPG master. Signed-off-by: NIIBE Yutaka <[email protected]>
2024-06-13Fix gpg-error.m4.NIIBE Yutaka1-14/+23
* src/gpg-error.m4 (_AM_PATH_GPGRT_CONFIG): Don't set gpg_error_config_version. (AM_PATH_GPG_ERROR): Set GPG_ERROR_CONFIG here and set gpg_error_config_version with GPG_ERROR_CONFIG. -- Signed-off-by: NIIBE Yutaka <[email protected]>
2024-06-07spawn: Support the use case in libassuan where PGMNAME==NULL.NIIBE Yutaka2-5/+24
* src/spawn-posix.c (my_exec): When PGMNAME==NULL, just fork. (_gpgrt_process_spawn): Support PGMNAME==NULL use case. * src/spawn-w32.c (_gpgrt_process_spawn): Return GPG_ERR_INV_ARG, when PGMNAME==NULL. -- Signed-off-by: NIIBE Yutaka <[email protected]>
2024-06-06spawn: Expose gpgrt_spawn_actions functions.NIIBE Yutaka6-8/+30
* src/gpg-error.def.in: Update. * src/gpg-error.h.in: Add declarations. * src/gpg-error.vers: Update. * src/visibility.c: Update. * src/visibility.h: Update. -- Signed-off-by: NIIBE Yutaka <[email protected]>
2024-06-06spawn: Add new GPGRT_PROCESS_NO_CONSOLE for Windows.NIIBE Yutaka2-0/+5
* src/gpg-error.h.in (GPGRT_PROCESS_NO_CONSOLE): New. * src/spawn-w32.c (_gpgrt_process_spawn): Handle GPGRT_PROCESS_NO_CONSOLE. -- This may be used to support ASSUAN_PIPE_CONNECT_DETACHED in libassuan. Signed-off-by: NIIBE Yutaka <[email protected]>
2024-06-06Cleanup spawn API implementation.NIIBE Yutaka3-95/+57
-- Signed-off-by: NIIBE Yutaka <[email protected]>
2024-06-06Fix return type of gpgrt_b64dec_*.NIIBE Yutaka2-4/+4
* src/gpg-error.h.in (gpgrt_b64dec_proc): Return gpg_err_code_t. (gpgrt_b64dec_finish): Ditto. * src/visibility.c: Fix return type. -- Signed-off-by: NIIBE Yutaka <[email protected]>
2024-06-05spawn:w32: Allow for up to 32 inherited handles.Werner Koch1-2/+2
* src/spawn-w32.c (spawn_detached): Increase array size. (_gpgrt_process_spawn): Ditto. -- The former limit of 16 might be a bit too low for some use cases.
2024-06-05spawn: Avoid bumping the error counter.Werner Koch2-20/+22
* src/spawn-posix.c: Use log_info instead of log_error. * src/spawn-w32.c: Ditto. (spawn_detached): Fix copying of hd[2] (_gpgrt_process_spawn): Ditto. -- The spawn function might be used to run helper processes which are non-critical for the operation of the program. For example to display help. Bumping the error counter via gpgrt_log_error would then let the entire program fail which might be surprising. It is better to just print an informational message and let the caller decide what to do with the returned error code.
2024-06-05spawn: Expose spawn functions API.NIIBE Yutaka9-129/+184
* src/gpg-error.def.in: Update. * src/gpg-error.vers: Update. * src/gpg-error.h.in: Add declarations. * src/visibility.c: Add implementations. * src/visibility.h: Expose them. -- GnuPG-bug-id: 6249 Signed-off-by: NIIBE Yutaka <[email protected]>
2024-06-04spawn:w32: Fix setting of dwFlags for CreateProcess.NIIBE Yutaka1-1/+2
* src/spawn-w32.c (_gpgrt_process_spawn): Only set STARTF_USESTDHANDLES with active handles. -- Signed-off-by: NIIBE Yutaka <[email protected]>
2024-05-30spawn: Allow NULL for ACT.NIIBE Yutaka2-2/+19
* src/spawn-posix.c (_gpgrt_process_spawn): ACT may be null. * src/spawn-w32.c (_gpgrt_process_spawn): Likewise. -- Signed-off-by: NIIBE Yutaka <[email protected]>
2024-05-29Fix process termination check at release.NIIBE Yutaka2-2/+2
* src/spawn-posix.c (_gpgrt_process_release): When NOT terminated, terminate and wait. * src/spawn-w32.c (_gpgrt_process_release): Likewise. -- Signed-off-by: NIIBE Yutaka <[email protected]>
2024-05-29Fix how environment variables are specified for spawn.NIIBE Yutaka3-10/+12
* src/gpgrt-int.h (_gpgrt_spawn_actions_set_envvars) [HAVE_W32_SYSTEM]: Assume use with GetEnvironmentStrings. (_gpgrt_spawn_actions_set_environ) [!HAVE_W32_SYSTEM]: New. * src/spawn-posix.c: Follow the change. * src/spawn-w32.c: Can specify envvars now. -- Signed-off-by: NIIBE Yutaka <[email protected]>
2024-05-29Cleaner semantics for _gpgrt_process_spawn without a callback.NIIBE Yutaka5-108/+211
* src/gpg-error.h.in (@define:struct_spawn_cb_arg@): Remove. (gpgrt_spawn_actions_t): New. (@define:spawn_actions_functions@): New. * src/gpgrt-int.h (_gpgrt_spawn_actions_new) (_gpgrt_spawn_actions_release, _gpgrt_spawn_actions_set_envvars) (_gpgrt_spawn_actions_set_redirect): New. [HAVE_W32_SYSTEM] (_gpgrt_spawn_actions_set_inherit_handles): New. [!HAVE_W32_SYSTEM] (_gpgrt_spawn_actions_set_inherit_fds) (_gpgrt_spawn_actions_set_atfork): New. (_gpgrt_process_spawn): Use gpgrt_spawn_actions_t. (_gpgrt_spawn_helper): Remove. * src/mkheader.c: Emit gpgrt_spawn_actions_* definition. * src/spawn-posix.c(_gpgrt_spawn_actions_new) (_gpgrt_spawn_actions_release, _gpgrt_spawn_actions_set_envvars) (_gpgrt_spawn_actions_set_redirect) (_gpgrt_spawn_actions_set_inherit_fds) (_gpgrt_spawn_actions_set_atfork): New. (spawn_detached, _gpgrt_process_spawn): Use gpgrt_spawn_actions_t. (_gpgrt_spawn_helper): Remove. * src/spawn-w32.c: Ditto, with _gpgrt_spawn_actions_set_inherit_handles, but no _gpgrt_spawn_actions_set_atfork. -- GnuPG-bug-id: 6249 Signed-off-by: NIIBE Yutaka <[email protected]>
2024-05-28Import spawn functions from GnuPG master.NIIBE Yutaka5-1132/+1245
* src/gpg-error.h.in (@define:gpgrt_process_t@): Remove. (@define:struct_spawn_cb_arg@): New. (enum gpgrt_process_requests): New. (GPGRT_PROCESS_DETACHED, GPGRT_PROCESS_STDIN_PIPE) (GPGRT_PROCESS_STDOUT_PIPE, GPGRT_PROCESS_STDERR_PIPE) (GPGRT_PROCESS_STDINOUT_SOCKETPAIR, GPGRT_PROCESS_STDIN_KEEP) (GPGRT_PROCESS_STDOUT_KEEP, GPGRT_PROCESS_STDERR_KEEP) (GPGRT_PROCESS_STDFDS_SETTING, GPGRT_PROCESS_STREAM_NONBLOCK): New. * src/gpgrt-int.h (_gpgrt_process_spawn, _gpgrt_process_terminate) (_gpgrt_process_get_fds, _gpgrt_process_get_streams) (_gpgrt_process_ctl, _gpgrt_process_wait, _gpgrt_process_release) (_gpgrt_process_wait_list, _gpgrt_spawn_helper): New. * src/mkheader.c: Emit definition of struct_spawn_cb_arg. * src/spawn-posix.c (_gpgrt_process_spawn, _gpgrt_process_terminate) (_gpgrt_process_get_fds, _gpgrt_process_get_streams) (_gpgrt_process_ctl, _gpgrt_process_wait, _gpgrt_process_release) (_gpgrt_process_wait_list, _gpgrt_spawn_helper): New. * src/spawn-w32.c: Ditto. -- GnuPG-bug-id: 6249 Signed-off-by: NIIBE Yutaka <[email protected]>
2024-04-26argparse: Fix a theoretical memory leak.Werner Koch1-3/+4
* src/argparse.c (store_alias): Free NAME because it has ownerhip here. Take care P is actually a pointer into NAME. -- Note that aliases have never been implemented. GnuPG-bug-id: 7105