The trousers is failing annocheck hardened check due to
__no_optimize being used for __tspi_memset(). Instead of
__no_optimize use a asm memory barrier.

Signed-off-by: Jerry Snitselaar <[email protected]>
---
 src/include/spi_utils.h    | 2 +-
 src/tspi/tsp_context_mem.c | 6 ++++--
 2 files changed, 5 insertions(+), 3 deletions(-)

diff --git a/src/include/spi_utils.h b/src/include/spi_utils.h
index 11255b2..6ef21ce 100644
--- a/src/include/spi_utils.h
+++ b/src/include/spi_utils.h
@@ -53,7 +53,7 @@ MUTEX_DECLARE_EXTERN(mem_cache_lock);
 void *calloc_tspi(TSS_HCONTEXT, UINT32);
 TSS_RESULT free_tspi(TSS_HCONTEXT, void *);
 TSS_RESULT __tspi_add_mem_entry(TSS_HCONTEXT, void *);
-void * __no_optimize __tspi_memset(void *, int, size_t);
+void * __tspi_memset(void *, int, size_t);
 
 /* secrets.c */
 
diff --git a/src/tspi/tsp_context_mem.c b/src/tspi/tsp_context_mem.c
index 2982df9..2769af3 100644
--- a/src/tspi/tsp_context_mem.c
+++ b/src/tspi/tsp_context_mem.c
@@ -258,8 +258,10 @@ free_tspi(TSS_HCONTEXT tspContext, void *memPointer)
 }
 
 /* definition for a memset that cannot be optimized away */
-void * __no_optimize
+void *
 __tspi_memset(void *s, int c, size_t n)
 {
-       return memset(s, c, n);
+       memset(s, c, n);
+       asm volatile("" ::: "memory");
+       return s;
 }
-- 
2.21.0



_______________________________________________
TrouSerS-tech mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/trousers-tech

Reply via email to