From cf43603b73bf9617626fb26ceff8d2b644c1c2b8 Mon Sep 17 00:00:00 2001
From: Fredrik Thulin <fredrik@thulin.net>
Date: Thu, 20 Dec 2012 15:02:03 +0100
Subject: [PATCH] proto_read_byte_array: Don't miss n_array when ! valid.

Sending side gck_rpc_message_write_byte_array() adds length data
when valid == 0, so receiving code (this) need to parse that obviosly.
---
 gck-rpc-dispatch.c | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)

diff --git a/gck-rpc-dispatch.c b/gck-rpc-dispatch.c
index 3f20fc1..184fa41 100644
--- a/gck-rpc-dispatch.c
+++ b/gck-rpc-dispatch.c
@@ -257,8 +257,12 @@ proto_read_byte_array(CallState * cs, CK_BYTE_PTR * array, CK_ULONG * n_array)
 		return PARSE_ERROR;
 
 	if (!valid) {
+		/* No array, no data, just length */
+		if (!egg_buffer_get_uint32
+		    (&msg->buffer, msg->parsed, &msg->parsed, &n_data))
+			return PARSE_ERROR;
+		*n_array = n_data;
 		*array = NULL;
-		*n_array = 0;
 		return CKR_OK;
 	}
 
-- 
GitLab