diff --git a/gck-rpc-dispatch.c b/gck-rpc-dispatch.c
index 0b7aa0d22844d61fc43d063a2e7dab2a61eec266..67ea0aabf0514a976ac50b177d670f5227aa8c06 100644
--- a/gck-rpc-dispatch.c
+++ b/gck-rpc-dispatch.c
@@ -257,11 +257,12 @@ proto_read_byte_array(CallState * cs, CK_BYTE_PTR * array, CK_ULONG * n_array)
 		return PARSE_ERROR;
 
 	if (!valid) {
+		uint32_t n_size;
 		/* No array, no data, just length */
 		if (!egg_buffer_get_uint32
-		    (&msg->buffer, msg->parsed, &msg->parsed, &n_data))
+		    (&msg->buffer, msg->parsed, &msg->parsed, &n_size))
 			return PARSE_ERROR;
-		*n_array = n_data;
+		*n_array = (size_t) n_size;
 		*array = NULL;
 		return CKR_OK;
 	}
diff --git a/gck-rpc-module.c b/gck-rpc-module.c
index a7a522e692cec76ba95f27a6ac46352c64732246..27b4145edbfd8842f5c8a13aa1cdf85d37d6fa8f 100644
--- a/gck-rpc-module.c
+++ b/gck-rpc-module.c
@@ -826,12 +826,14 @@ proto_read_byte_array(GckRpcMessage * msg, CK_BYTE_PTR arr,
 
 	/* If not valid, then just the length is encoded, this can signify CKR_BUFFER_TOO_SMALL */
 	if (!valid) {
+		uint32_t t_len;
+
 		if (!egg_buffer_get_uint32
 		    (&msg->buffer, msg->parsed, &msg->parsed,
-		     (uint32_t *) & vlen))
+		     & t_len))
 			return PARSE_ERROR;
 
-		*len = vlen;
+		*len = t_len;
 
 		if (arr)
 			return CKR_BUFFER_TOO_SMALL;