aboutsummaryrefslogtreecommitdiffstats
path: root/src (unfollow)
Commit message (Collapse)AuthorFilesLines
2023-05-25Add new pipe functions to control its server process.gniibe/t6487NIIBE Yutaka6-5/+73
* src/assuan-pipe-connect.c (assuan_pipe_wait_server_termination) (assuan_pipe_kill_server): New. * src/assuan.h.in: Add new functions. * src/libassuan.def: Add symbols for those functions. * src/libassuan.vers: Likewise. * src/system-posix.c (__assuan_waitpid): Extend the semantics for OPTIONS. * src/system-w32.c (__assuan_waitpid): Likewise. -- GnuPG-bug-id: 6487 Signed-off-by: NIIBE Yutaka <[email protected]>
2023-05-24Allow use of global system hooks with API version 2.NIIBE Yutaka2-1/+7
* src/libassuan.m4 (LIBASSUAN_API_REQUESTED): New. * src/assuan.h.in (ASSUAN_NO_GLOBAL_SYSTEM_HOOKS_ANY_MORE): New. (ASSUAN_SYSTEM_NPTH_IMPL, ASSUAN_SYSTEM_NPTH): Relax the condition. Signed-off-by: NIIBE Yutaka <[email protected]>
2023-05-17w32: File handle passing to server is now supported.NIIBE Yutaka1-2/+2
* configure.ac: Fix for MinGW. * src/assuan-buffer.c (assuan_sendfd): Fix runtime check. -- Signed-off-by: NIIBE Yutaka <[email protected]>
2023-05-17Don't use ASSUAN_INVALID_PID for assuan_pid_t value.NIIBE Yutaka2-3/+3
* src/assuan.c (assuan_new_ext): Use -1. * src/client.c (_assuan_client_finish): Likewise. -- Signed-off-by: NIIBE Yutaka <[email protected]>
2023-05-17w32: Cleaner semantics for PID and Process handle.NIIBE Yutaka15-36/+119
* src/assuan-defs.h (struct assuan_context_s): Introduce SERVER_PROC member. Clarify the use of PROCESS_ID and PID. Introduce assuan_pid_t for internal use of process id or handle. * src/assuan.h.in: Follow the change. * src/assuan.c (assuan_new_ext): Likewise. * src/client.c (_assuan_client_finish): Likewise. * src/assuan-pipe-connect.c (pipe_connect): Likewise. * src/server.c (_assuan_server_finish): Likewise. * src/system-posix.c: Likewise. * src/system-w32.c: Likewise. * src/system.c: Likewise. * src/assuan-pipe-server.c (assuan_init_pipe_server) [HAVE_W32_SYSTEM]: Exclude the use of _assuan_pipe_connect_pid. * src/assuan-socket-server.c (accept_connection_bottom) [HAVE_W32_SYSTEM]: Exclude the use of the member peercred.pid. * src/assuan-socket.c (_assuan_sock_check_nonce): Support Cygwin Unix domain emulation for having valid client process ID. * src/context.c (assuan_get_pid): Clarify the use cases. * src/posix-types.inc.h, src/w32-types.inc.h: Introduce assuan_pid_t. -- GnuPG-bug-id: 6487 Signed-off-by: NIIBE Yutaka <[email protected]>
2023-05-17Fix comments.NIIBE Yutaka2-2/+2
-- Signed-off-by: NIIBE Yutaka <[email protected]>
2023-05-16Fix wrong return type for functions.NIIBE Yutaka1-6/+6
* src/system.c (_assuan_recvmsg, _assuan_sendmsg): Fix to int. (_assuan_waitpid): Fix to pid_t. Signed-off-by: NIIBE Yutaka <[email protected]>
2023-05-11Deprecate ASSUAN_SYSTEM_NPTH.NIIBE Yutaka1-0/+5
* src/assuan.h.in: Introduce new configuration with ASSUAN_REALLY_REQUIRE_OLD_WAY_OF_SYSTEM_NPTH. -- Existing use cases just works with ASSUAN_SYSTEM_NPTH=NULL. Signed-off-by: NIIBE Yutaka <[email protected]>
2023-05-11Allow NULL for system_hooks.NIIBE Yutaka1-0/+3
* src/system.c (_assuan_system_hooks_copy): Do nothing with SRC=NULL. Signed-off-by: NIIBE Yutaka <[email protected]>
2023-05-11Fix the previous commit.NIIBE Yutaka1-0/+2
* src/assuan.c (_assuan_pre_syscall): Call the pre_syscall_func function after get it. Signed-off-by: NIIBE Yutaka <[email protected]>
2023-05-11Fix calling gpgrt_get_syscall_clamp.NIIBE Yutaka1-6/+5
* src/assuan.c (assuan_new_ext): Move gpgrt_get_syscall_clamp to... (_assuan_pre_syscall): ... here. -- Signed-off-by: NIIBE Yutaka <[email protected]>
2023-05-10w32: Minor fixes for ifdef/endif for W32 and W64.NIIBE Yutaka3-3/+3
* src/assuan-defs.h: Fix. * src/assuan-pipe-connect.c: Likewise. * src/assuan-socket-connect.c: Likewise. -- Signed-off-by: NIIBE Yutaka <[email protected]>
2023-05-10w32: Fix the semantics of sending FD, it's Windows HANDLE.NIIBE Yutaka2-29/+12
* src/assuan-handler.c (w32_handler_sendfd): It's Windows HANDLE. * src/system-w32.c (get_file_handle, w32_fdpass_send): Likewise. * tests/fdpassing.c (cmd_echo): Received FD is Windows HANDLE. (client): Use Windows HANDLE for assuan_sendfd. -- GnuPG-bug-id: 6236 Signed-off-by: NIIBE Yutaka <[email protected]>
2023-05-08Implement timeout in assuan_sock_connect_byname.NIIBE Yutaka2-17/+42
* src/assuan-socket.c (socks5_connect): Add new argument TIMEOUT in milliseconds. (_assuan_sock_connect): Follow the change. (_assuan_sock_connect_byname): Fourth argument is now TIMEOUT. (assuan_sock_connect_byname): Likewise. -- GnuPG-bug-id: 3302 Signed-off-by: NIIBE Yutaka <[email protected]>
2023-01-04w32: Fix assuan_socket_connect.NIIBE Yutaka1-1/+2
* src/assuan-socket-connect.c (_assuan_connect_finalize): Don't set flags.is_socket here, since it's too late. (assuan_socket_connect_fd): Set flags.is_socket. (assuan_socket_connect): Set flags.is_socket, before _assuan_sock_new. -- GnuPG-bug-id: 6324 Fixes-commit: c93eb901e58d5b31294c2d452659b5150d95ec59 Signed-off-by: NIIBE Yutaka <[email protected]>
2022-11-15w32: Fix confusion between process ID and process HANDLE.NIIBE Yutaka4-12/+12
* src/assuan-defs.h (struct assuan_context_s): Rename to process_id. * src/assuan-pipe-connect.c (initial_handshake): Fix variable name and access to the member field. * src/assuan-socket-connect.c (_assuan_connect_finalize): Likewise. * src/system-w32.c (get_file_handle): Likewise. (w32_fdpass_send): Likewise. -- Fixes-commit: ba84b780df973ba7ca7f7c51fbd1b6d1a69b8c01 GnuPG-bug-id: 6236 Signed-off-by: NIIBE Yutaka <[email protected]>
2022-11-09w32: Have PROCESS_HANDLE in struct assuan_context_s.NIIBE Yutaka4-10/+17
* src/assuan-defs.h (struct assuan_context_s): Add process_handle field. It's "int" instead of DWORD, because of getpid function. * src/assuan-pipe-connect.c (initial_handshake): Set ->process_handle, not override ->pid. * src/assuan-socket-connect.c (assuan_connect_finalize): Likewise. * src/system-w32.c (w32_fdpass_send): Use ->process_handle. -- In the client code, ctx->pid (by the function assuan_get_pid) may be used to watch the finish of server process. Thus, it should not be overridden. See: gnupg/agent/call-daemon.c. GnuPG-bug-id: 6236 Signed-off-by: NIIBE Yutaka <[email protected]>
2022-11-07w32: Support fd passing through socket.NIIBE Yutaka2-1/+29
* src/assuan-socket-connect.c (_assuan_connect_finalize): Use w32_fdpass_send. Get peer's PID from the initial connection. * src/assuan-socket-server.c (assuan_init_socket_server): Use w32_fdpass_recv. -- GnuPG-bug-id: GnuPG-bug-id: 6236 Signed-off-by: NIIBE Yutaka <[email protected]>
2022-11-07w32: Support fd passing through pipe.NIIBE Yutaka2-3/+35
* src/assuan-pipe-connect.c (initial_handshake): Get peer's PID from the initial interaction. * src/assuan-pipe-server.c (assuan_init_pipe_server): Handle the case of FILEDES == NULL on Windows. * tests/Makefile.am [HAVE_W32_SYSTEM] (TESTS): Add fdpassing. * tests/fdpassing.c: Remove including sys/socket.h and sys/wait.h. (cmd_echo): Output to stder, as stdout is /dev/null. (main): Support Windows. -- GnuPG-bug-id: 6236 Signed-off-by: NIIBE Yutaka <[email protected]>
2022-11-07Show the pid of listening process in the hello line.NIIBE Yutaka1-1/+1
* src/assuan-listen.c (assuan_accept): Use getpid instead of assuan_get_pid. -- This changes the initial interaction. Before the change, the PID of peer was shown from listening process (but not used at all, in the code). That is, it was the PID of connecting process. After the change, the PID of listening process is shown, which can be used by connecting process. GnuPG-bug-id: 6236 Fixes-commit: a00b1ede5403f1e38534cc3b232739f20b8567e9 Signed-off-by: NIIBE Yutaka <[email protected]>
2022-11-04w32: Support sendfd/recvfd through pipe connection.NIIBE Yutaka4-8/+91
* src/assuan-defs.h (w32_fdpass_send, w32_fdpass_recv): New. * src/assuan-pipe-connect.c [HAVE_W32_SYSTEM] (pipe_connect): Set w32_fdpass_send. [!HAVE_W32_SYSTEM] (assuan_pipe_connect): Use socketpair_connect. * src/assuan-pipe-server.c [HAVE_W32_SYSTEM] (assuan_init_pipe_server): Set w32_fdpass_recv. * src/system-w32.c (get_file_handle): New. (w32_fdpass_send): New, using "SENDFD" internal command. (w32_fdpass_recv): New, using the result of "SENDFD" internal command. -- GnuPG-bug-id: 6236 Signed-off-by: NIIBE Yutaka <[email protected]>
2022-11-04w32: Add SENDFD internal command.NIIBE Yutaka1-0/+48
* src/assuan-handler.c (w32_handler_sendfd): New. (std_cmd_table): Add the "SENDFD" command. -- GnuPG-bug-id: 6236 Signed-off-by: NIIBE Yutaka <[email protected]>
2022-11-04client: Only call _assuan_waitpid when it's not socket.NIIBE Yutaka1-1/+2
* src/client.c (_assuan_client_finish): Check if it's socket. -- GnuPG-bug-id: 6236 Signed-off-by: NIIBE Yutaka <[email protected]>
2022-11-01build: Prefer gpgrt-config when available.NIIBE Yutaka1-2/+2
* src/libassuan.m4: Overriding the decision by --with-libassuan-prefix, use gpgrt-config libassuan when gpgrt-config is available. -- This may offer better migration. GnuPG-bug-id: 5034 Signed-off-by: NIIBE Yutaka <[email protected]>
2022-10-25w32: Fix make distAndre Heinecke1-1/+1
* src/Makefile.am (parts_of_assuan_h): Readd w32-includes.h -- This was accidentally removed. Fixes-commit: df6aec566ce450e4e0702e4784569642f2bc6703
2022-10-24Fix an explanation for socket on Windows.NIIBE Yutaka1-1/+1
-- Signed-off-by: NIIBE Yutaka <[email protected]>
2022-10-12build: Remove WindowsCE support from mkheader.NIIBE Yutaka2-30/+3
* src/assuan.h.in (@include:sys/types.h@, @include:unistd.h@): Simply include <sys/types.h> and <unistd.h>. (@include:w32ce-add@): Remove. * src/mkheader.c (write_special): Remove mingw32ce support. -- GnuPG-bug-id: 6170 Signed-off-by: NIIBE Yutaka <[email protected]>
2022-09-08Silence compiler warnings.NIIBE Yutaka1-2/+2
* src/assuan-socket.c (assuan_sock_init): It's no args. (assuan_sock_deinit): Likewise. -- Signed-off-by: NIIBE Yutaka <[email protected]>
2022-08-31Drop WindowsCE support.NIIBE Yutaka15-3216/+5
* contrib/*: Remove. * Makefile.am (EXTRA_DIST): Don't include contrib/. * configure.ac (HAVE_W32CE_SYSTEM): Remove. * src/gpgcedev.c: Remove. * src/gpgcedev.def: Remove. * src/gpgcemgr.c: Remove. * src/system-w32ce.c: Remove. * src/w32ce-add.h: Remove. * src/w32ce-fd-t.inc.h: Remove. * src/Makefile.am (EXTRA_DIST, parts_of_assuan_h, common_sources): Fix. * src/assuan-buffer.c [HAVE_W32CE_SYSTEM]: No conditionalize. * src/setenv.c [HAVE_W32CE_SYSTEM]: Likewise. * src/assuan-defs.h [HAVE_W32CE_SYSTEM]: Remove dependent part. * src/assuan-error.c [HAVE_W32CE_SYSTEM]: Likewise. * src/assuan-handler.c [HAVE_W32CE_SYSTEM]: Likewise. * src/assuan-socket.c [HAVE_W32CE_SYSTEM]: Likewise. * src/system.c [HAVE_W32CE_SYSTEM]: Likewise. * src/sysutils.c [HAVE_W32CE_SYSTEM]: Likewise. * tests/Makefile.am (EXTRA_DIST): Fix. (w32cetools): Remove. * tests/common.h [HAVE_W32CE_SYSTEM]: Remove dependent part. * tests/pipeconnect.c [HAVE_W32CE_SYSTEM]: Likewise. * tests/ce-createpipe.c: Remove. * tests/ce-server.c: Remove. -- GnuPG-bug-id: 6170 Signed-off-by: NIIBE Yutaka <[email protected]>
2022-06-20Fix the previous commit.NIIBE Yutaka1-1/+1
-- Signed-off-by: NIIBE Yutaka <[email protected]>
2022-06-20Don't access NULL by wipememory.NIIBE Yutaka1-1/+1
* src/assuan-inquire.c (assuan_inquire): Check mb->buf. -- There is a case where mb->buf may be cleared already by get_membuf. Fixes-commit: d812e28af637144d078005887cb7519d7a2d0c58 Signed-off-by: NIIBE Yutaka <[email protected]>
2022-06-08config: Remove 18 years unused variableJakub Jelen1-1/+0
Its use was removed in 2004 in 9096d0adb448330b5b197579bd57d942635d7021 * src/libassuan-config.in: Remove unused variable -- Signed-off-by: Jakub Jelen <[email protected]>
2022-05-25client: Handle inquiry from server with CONFIDENTIAL.NIIBE Yutaka3-2/+16
* src/assuan-defs.h (struct assuan_context_s): Add new flags, in_inq_cb and confidential_inquiry. * src/client.c (assuan_transact): Use the new flags to wipe the outbound buffer for inquiry when CONFIDENTIAL. * src/context.c (assuan_set_flag): When ASSUAN_CONFIDENTIAL is set in inquire callback, set the confidential_inquiry flag. -- GnuPG-bug-id: 5977 Signed-off-by: NIIBE Yutaka <[email protected]>
2022-05-25struct assuan_context_s: Move boolean fields to flags.NIIBE Yutaka6-40/+39
* src/assuan-defs.h (struct assuan_context_s): Move is_server, in_inquire, in_process_next, process_complete, in_command into flags. * src/assuan-buffer.c: Follow the change. * src/assuan-handler.c: Likewise. * src/assuan-inquire.c: Likewise. * src/assuan-pipe-server.c: Likewise. * src/assuan-socket-server.c: Likewise. -- Signed-off-by: NIIBE Yutaka <[email protected]>
2022-05-25client: Wipe the inbound buffer when CONFIDENTIAL.NIIBE Yutaka1-0/+2
* src/client.c (assuan_transact): Wipe the buffer. -- GnuPG-bug-id: 5977 Signed-off-by: NIIBE Yutaka <[email protected]>
2022-05-25server,client: Wipe the outbound buffer when CONFIDENTIAL.NIIBE Yutaka1-0/+2
* src/assuan-buffer.c (assuan_send_data): Wipe the buffer. -- GnuPG-bug-id: 5977 Signed-off-by: NIIBE Yutaka <[email protected]>
2022-05-25server: Wipe out the memory used by assuan_inquire if CONFIDENTIAL.NIIBE Yutaka1-1/+7
* src/assuan-inquire.c (assuan_inquire): Wipe the memory and inbound buffer. -- GnuPG-bug-id: 5977 Signed-off-by: NIIBE Yutaka <[email protected]>
2022-04-08Add assuan_sock_accept function.NIIBE Yutaka2-0/+27
* src/assuan-socket.c (_assuan_sock_accept): New. (assuan_sock_accept): New. * src/assuan.h.in (assuan_sock_accept): New. -- GnuPG-bug-id: 5925 Signed-off-by: NIIBE Yutaka <[email protected]>
2022-04-06w32: Store a flag if it's socket or not in Assuan CTX.NIIBE Yutaka5-34/+16
* src/assuan-defs.h (struct assuan_context_s): Add is_socket flag. * src/assuan-socket.c (assuan_sock_init): Set the flag. * src/assuan-socket-connect.c (_assuan_connect_finalize): Likewise. * src/assuan-socket-server.c (assuan_init_socket_server): Likewise. * src/system-w32.c (__assuan_close): Use the flag. (is_socket): Remove. (__assuan_read, __assuan_write): Use the flag. -- Signed-off-by: NIIBE Yutaka <[email protected]>
2022-04-05Fix API break.NIIBE Yutaka3-10/+20
* src/posix-fd-t.inc.h (assuan_fd_from_posix_fd): Revert. * src/w32-fd-t.inc.h (assuan_fd_from_posix_fd): Revert. * src/system-w32.c (assuan_fd_from_posix_fd): Revert. -- Note that assuan_fd_from_posix_fd is exposed inline function. Fixes-commit: 28a40a298661877e1bbeb3eb9ac58a85bdd85b02 Signed-off-by: NIIBE Yutaka <[email protected]>
2022-04-05build: Remove unused putc_unlocked.c.NIIBE Yutaka1-31/+0
* src/putc_unlocked.c: Remove. * configure.ac: Remove putc_unlocked replace. -- Signed-off-by: NIIBE Yutaka <[email protected]>
2022-04-05Take advantage of gpgrt_get_syscall_clamp function.NIIBE Yutaka5-22/+179
* src/assuan-defs.h (_assuan_pre_syscall, _assuan_post_syscall): New. * src/assuan.c (_assuan_pre_syscall, _assuan_post_syscall): New. (pre_syscall_func, post_syscall_func): New. (_assuan_syscall_func_initialized): New. (assuan_new_ext): Call gpgrt_get_syscall_clamp to get clamp functions. * src/system-posix.c (_assuan_system_hooks): Use version 0. * src/system-w32.c (_assuan_system_hooks): Likewise. * src/system.c (_assuan_usleep): Call clamp functions if no hooks. (_assuan_close, _assuan_close_inheritable, _assuan_read): Likewise. (_assuan_write, _assuan_recvmsg, _assuan_sendmsg): Likewise. (_assuan_waitpid, _assuan_connect): Likewise. (_assuan_pipe): Call __assuan_pipe directly if no hooks. (_assuan_spawn): Call __assuan_spawn directly if no hooks. (_assuan_socketpair): Call __assuan_socketpair directly if no hooks. (_assuan_socket): Call __assuan_socket directly if no hooks. -- GnuPG-bug-id: 5914 Signed-off-by: NIIBE Yutaka <[email protected]>
2022-04-04w32: Fix assuan_socket_connect_fd to be usable.NIIBE Yutaka5-27/+16
* src/assuan.h.in (assuan_socket_connect_fd): Second arg assuan_fd_t. * src/assuan-socket-connect.c (assuan_socket_connect_fd): Second arg should be an object of type SOCKET. * src/posix-fd-t.inc.h (assuan_fd_from_posix_fd): Remove. * src/w32-fd-t.inc.h (assuan_fd_from_posix_fd): Move to... * src/system-w32.c (assuan_fd_from_posix_fd): ... here. -- On Windows, when an application has an already-connected socket, it must be an object of type SOCKET. In this case, it is wrong to use _get_osfhandle. This does not constitute any ABI/API change for POSIX system. This is an API change for Windows, as assuan_fd_t on Windows is pointer type, but it's a fix from non-correctly-usable API. Signed-off-by: NIIBE Yutaka <[email protected]>
2022-04-01build: Better cross build support.NIIBE Yutaka1-3/+3
* configure.ac: Use AX_CC_FOR_BUILD. * src/Makefile.am: Use EXEEXT_FOR_BUILD. * m4/ax_cc_for_build.m4: New from libgpg-error. -- Signed-off-by: NIIBE Yutaka <[email protected]>
2022-03-31Fix internal socket API to be consistent for SOCKET.NIIBE Yutaka5-34/+44
* src/assuan-defs.h (_assuan_socket): Return value has type assuan_fd_t. (_assuan_connect): Second argument has type assuan_fd_t. [HAVE_W64_SYSTEM] (SOCKET2HANDLE): Revert the change before. * src/assuan-socket.c (_assuan_sock_new): No type coercion for _assuan_socket. (socks5_connect): No type coercion for _assuan_connect. (_assuan_sock_connect): Likewise. * src/assuan.h.in (struct assuan_system_hooks): Fix method signature of socket for return value type and of connect for the second argument. (__assuan_socket): Return value has type assuan_fd_t. (__assuan_connect): Second argument has type assuan_fd_t. (ASSUAN_SYSTEM_NPTH_IMPL): Fix for _assuan_npth_connect for its second argument. * src/system-w32.c (__assuan_socket): Return value has type assuan_fd_t. Use SOCKET2HANDLE for type coercion for socket. Use INVALID_SOCKET. (__assuan_connect): Second argument has type assuan_fd_t. Use HANDLE2SOCKET for type coercion for sock. * src/system.c (_assuan_socket): Return value has type assuan_fd_t. (_assuan_connect): Second argument has type assuan_fd_t. -- Note that this change does *NOT* constitute any ABI change, no API change, either. It is fix for internal consistency for socket. The change of SOCKET2HANDLE in the past for HAVE_W64_SYSTEM was done, because of internal use of 'int' which represents the type for socket. Instead of fixing that part of code for 'int', I touched another part to silence warnings. That's not correct fix, but a work around. This time, with the changes, whole parts are now consisitent. Fixes-commit: 6c736325c028647dc3283bf723e2e28199e7f45b Signed-off-by: NIIBE Yutaka <[email protected]>
2022-03-31build: When no gpg-error-config, not install libassuan-config.NIIBE Yutaka1-0/+4
* configure.ac (USE_GPGRT_CONFIG): New. * src/Makefile.am [USE_GPGRT_CONFIG]: Conditionalize the install of libassuan-config. -- When system will migrate use of gpgrt-config and removal of gpg-error-config, libassuan-config will not be installed (but use libassuan.pc by gpgrt-config). Signed-off-by: NIIBE Yutaka <[email protected]>
2022-03-31Remove GNU Pth support.NIIBE Yutaka5-162/+0
* src/posix-sys-pth-impl.h: Remove. * src/w32-sys-pth-impl.h: Remove. * src/Makefile.am: Follow the change. * src/assuan.h.in (ASSUAN_SYSTEM_PTH_IMPL, ASSUAN_SYSTEM_PTH): Remove. * src/mkheader.c (write_special): Remove Pth support. -- GnuPG-bug-id: 5911 Signed-off-by: NIIBE Yutaka <[email protected]>
2022-03-29w32: Fix definition of type to be generated into assuan.h.NIIBE Yutaka1-0/+5
* src/w32-types.inc.h: Distinguish the case of _WIN64. -- Signed-off-by: NIIBE Yutaka <[email protected]>
2021-03-22Release 2.5.5.libassuan-2.5.5Werner Koch2-2/+2
2021-03-09Support Unicode when starting servers on Windows.Werner Koch3-21/+36
* src/assuan-socket.c (utf8_to_wchar): Rename to (_assuan_utf8_to_wchar): this and give global scope. * src/system-w32.c (__assuan_spawn): Use CreateProcessW. -- GnuPG-bug-id: 4398