summaryrefslogtreecommitdiff
path: root/p11-kit/rpc-server.c
diff options
context:
space:
mode:
authorDaiki Ueno <dueno@redhat.com>2016-09-19 16:36:19 +0200
committerStef Walter <stefw@redhat.com>2016-10-05 15:13:08 +0200
commita96f354c3068edb6c8ac80ae6d9a6611651145d7 (patch)
treed8a89a7019b632699189044d59155b887ff36e0a /p11-kit/rpc-server.c
parent2fe688e8bd360ce2f364bfb6ef80e07712c9bb86 (diff)
downloadp11-kit-a96f354c3068edb6c8ac80ae6d9a6611651145d7.tar.gz
rpc: Send x-init-reserved to remote modulebefore-move
Signed-off-by: Stef Walter <stefw@redhat.com> * Fixed up indentation https://bugs.freedesktop.org/show_bug.cgi?id=80519
Diffstat (limited to 'p11-kit/rpc-server.c')
-rw-r--r--p11-kit/rpc-server.c13
1 files changed, 13 insertions, 0 deletions
diff --git a/p11-kit/rpc-server.c b/p11-kit/rpc-server.c
index 6be75bd..225cc86 100644
--- a/p11-kit/rpc-server.c
+++ b/p11-kit/rpc-server.c
@@ -662,6 +662,9 @@ rpc_C_Initialize (CK_X_FUNCTION_LIST *self,
CK_C_INITIALIZE_ARGS init_args;
CK_BYTE_PTR handshake;
CK_ULONG n_handshake;
+ CK_BYTE reserved_present = 0;
+ CK_BYTE_PTR reserved = NULL;
+ CK_ULONG n_reserved;
CK_RV ret = CKR_OK;
p11_debug ("C_Initialize: enter");
@@ -678,6 +681,15 @@ rpc_C_Initialize (CK_X_FUNCTION_LIST *self,
p11_message ("invalid handshake received from connecting module");
ret = CKR_GENERAL_ERROR;
}
+ }
+
+ if (ret == CKR_OK) {
+ if (!p11_rpc_message_read_byte (msg, &reserved_present))
+ ret = PARSE_ERROR;
+ }
+
+ if (ret == CKR_OK) {
+ ret = proto_read_byte_array (msg, &reserved, &n_reserved);
assert (p11_rpc_message_is_verified (msg));
}
@@ -685,6 +697,7 @@ rpc_C_Initialize (CK_X_FUNCTION_LIST *self,
if (ret == CKR_OK) {
memset (&init_args, 0, sizeof (init_args));
init_args.flags = CKF_OS_LOCKING_OK;
+ init_args.pReserved = reserved_present ? reserved : NULL;
func = self->C_Initialize;
assert (func != NULL);