From bb7aa0ebed7379275eba6ad1eec62da34505c7e4 Mon Sep 17 00:00:00 2001 From: NIIBE Yutaka Date: Wed, 2 Aug 2023 14:28:56 +0900 Subject: New function: assuan_control. * src/assuan.c (assuan_control): New. * src/assuan.h.in (ASSUAN_CONTROL_REINIT_SYSCALL_CLAMP): New. (assuan_control): New. * src/libassuan.def (assuan_control): Add. * src/libassuan.vers (assuan_control): Add. -- GnuPG-bug-id: 6625 Signed-off-by: NIIBE Yutaka --- src/assuan.c | 21 +++++++++++++++++++++ src/assuan.h.in | 10 ++++++++++ src/libassuan.def | 1 + src/libassuan.vers | 1 + 4 files changed, 33 insertions(+) diff --git a/src/assuan.c b/src/assuan.c index c8397da..0332a24 100644 --- a/src/assuan.c +++ b/src/assuan.c @@ -114,6 +114,27 @@ assuan_set_system_hooks (assuan_system_hooks_t system_hooks) } +gpg_error_t +assuan_control (enum assuan_ctl_cmds cmd, void *arg) +{ + gpg_error_t err = 0; + + (void)arg; + switch (cmd) + { + case ASSUAN_CONTROL_NOP: + default: + /* Nothing to do. */ + break; + case ASSUAN_CONTROL_REINIT_SYSCALL_CLAMP: + gpgrt_get_syscall_clamp (&pre_syscall_func, &post_syscall_func); + _assuan_syscall_func_initialized = 1; + break; + } + + return err; +} + /* Used before blocking system calls. */ void _assuan_pre_syscall (void) diff --git a/src/assuan.h.in b/src/assuan.h.in index 99444b8..14492ec 100644 --- a/src/assuan.h.in +++ b/src/assuan.h.in @@ -154,6 +154,16 @@ void assuan_release (assuan_context_t ctx); * context CTX. This is a convenience function. */ void assuan_free (assuan_context_t ctx, void *ptr); +/* Codes used with the gcry_control function. */ +enum assuan_ctl_cmds + { + ASSUAN_CONTROL_NOP = 0, + ASSUAN_CONTROL_REINIT_SYSCALL_CLAMP = 1 + }; + +/* Perform control operations defined by CMD. */ +gpg_error_t assuan_control (enum assuan_ctl_cmds cmd, void *arg); + /* Set user-data in a context. */ void assuan_set_pointer (assuan_context_t ctx, void *pointer); diff --git a/src/libassuan.def b/src/libassuan.def index 088400b..1769a97 100644 --- a/src/libassuan.def +++ b/src/libassuan.def @@ -119,6 +119,7 @@ EXPORTS assuan_sock_accept @98 assuan_pipe_wait_server_termination @99 assuan_pipe_kill_server @100 + assuan_control @101 ; END diff --git a/src/libassuan.vers b/src/libassuan.vers index 07612d4..1b33475 100644 --- a/src/libassuan.vers +++ b/src/libassuan.vers @@ -108,6 +108,7 @@ LIBASSUAN_1.0 { assuan_sock_accept; assuan_pipe_wait_server_termination; assuan_pipe_kill_server; + assuan_control; __assuan_close; __assuan_pipe; -- cgit v1.2.3