[Cryptech-Commits] [sw/libhal] 01/03: Fix race condition in pkey_slot allocation.

git at cryptech.is git at cryptech.is
Sat Mar 4 19:39:27 UTC 2017


This is an automated email from the git hooks/post-receive script.

sra at hactrn.net pushed a commit to branch pymux
in repository sw/libhal.

commit 17c53b59b5502078e48c40935eeac70417101045
Author: Rob Austein <sra at hactrn.net>
AuthorDate: Fri Mar 3 22:04:26 2017 -0500

    Fix race condition in pkey_slot allocation.
---
 rpc_pkey.c | 20 ++++++++++----------
 1 file changed, 10 insertions(+), 10 deletions(-)

diff --git a/rpc_pkey.c b/rpc_pkey.c
index ba75f7e..48072ce 100644
--- a/rpc_pkey.c
+++ b/rpc_pkey.c
@@ -44,11 +44,11 @@
 #endif
 
 #if HAL_STATIC_PKEY_STATE_BLOCKS > 0
-static hal_pkey_slot_t pkey_handle[HAL_STATIC_PKEY_STATE_BLOCKS];
+static hal_pkey_slot_t pkey_slot[HAL_STATIC_PKEY_STATE_BLOCKS];
 #endif
 
 /*
- * Handle allocation is simple: look for an unused (HAL_KEY_TYPE_NONE)
+ * Handle allocation is simple: look for an unused (HAL_HANDLE_NONE)
  * slot in the table, and, assuming we find one, construct a composite
  * handle consisting of the index into the table and a counter whose
  * sole purpose is to keep the same handle from reoccurring anytime
@@ -74,13 +74,13 @@ static inline hal_pkey_slot_t *alloc_slot(const hal_key_flags_t flags)
   if ((flags & HAL_KEY_FLAG_TOKEN) != 0)
     glop |= HAL_PKEY_HANDLE_TOKEN_FLAG;
 
-  for (int i = 0; slot == NULL && i < sizeof(pkey_handle)/sizeof(*pkey_handle); i++) {
-    if (pkey_handle[i].type != HAL_KEY_TYPE_NONE)
+  for (int i = 0; slot == NULL && i < sizeof(pkey_slot)/sizeof(*pkey_slot); i++) {
+    if (pkey_slot[i].pkey_handle.handle != HAL_HANDLE_NONE)
       continue;
-    memset(&pkey_handle[i], 0, sizeof(pkey_handle[i]));
-    pkey_handle[i].pkey_handle.handle = i | glop;
-    pkey_handle[i].hint = -1;
-    slot = &pkey_handle[i];
+    memset(&pkey_slot[i], 0, sizeof(pkey_slot[i]));
+    pkey_slot[i].pkey_handle.handle = i | glop;
+    pkey_slot[i].hint = -1;
+    slot = &pkey_slot[i];
   }
 #endif
 
@@ -101,8 +101,8 @@ static inline hal_pkey_slot_t *find_handle(const hal_pkey_handle_t handle)
 #if HAL_STATIC_PKEY_STATE_BLOCKS > 0
   const int i = (int) (handle.handle & 0xFFFF);
 
-  if (i < sizeof(pkey_handle)/sizeof(*pkey_handle) && pkey_handle[i].pkey_handle.handle == handle.handle)
-    slot = &pkey_handle[i];
+  if (i < sizeof(pkey_slot)/sizeof(*pkey_slot) && pkey_slot[i].pkey_handle.handle == handle.handle)
+    slot = &pkey_slot[i];
 #endif
 
   hal_critical_section_end();



More information about the Commits mailing list