aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNIIBE Yutaka <[email protected]>2023-08-02 05:28:56 +0000
committerNIIBE Yutaka <[email protected]>2023-08-02 05:32:27 +0000
commitbb7aa0ebed7379275eba6ad1eec62da34505c7e4 (patch)
tree80f7d4078eaf39d3da9acbe8a2e06778f526b559
parentlibassuan.m4: Allow use of libassuan 3 for API of version 2. (diff)
downloadlibassuan-bb7aa0ebed7379275eba6ad1eec62da34505c7e4.tar.gz
libassuan-bb7aa0ebed7379275eba6ad1eec62da34505c7e4.zip
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 <[email protected]>
-rw-r--r--src/assuan.c21
-rw-r--r--src/assuan.h.in10
-rw-r--r--src/libassuan.def1
-rw-r--r--src/libassuan.vers1
4 files changed, 33 insertions, 0 deletions
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;