[gnutls-devel] GnuTLS | gnutls_rnd manage memory per-thread (!1647)

Read-only notification of GnuTLS library development activities gnutls-devel at lists.gnutls.org
Mon Sep 26 13:45:20 CEST 2022




Zoltán Fridrich commented on a discussion on lib/random.c: https://gitlab.com/gnutls/gnutls/-/merge_requests/1647#note_1114227861

>  
>  /* Per thread context of random generator, and a flag to indicate initialization */
> -static _Thread_local void *gnutls_rnd_ctx;
> -static _Thread_local unsigned rnd_initialized = 0;
> +gl_tls_key_t ctx_key;
> +_Thread_local unsigned rnd_initialized = 0;
>  
> -struct rnd_ctx_list_st {
> -	void *ctx;
> -	struct rnd_ctx_list_st *next;
> -};
> -
> -/* A global list of all allocated contexts - to be
> - * used during deinitialization. */
> -GNUTLS_STATIC_MUTEX(gnutls_rnd_ctx_list_mutex);
> -static struct rnd_ctx_list_st *head = NULL;

I have added a hash table where the key is the calling threads ID. We cant really use linked list as we would have to index the contexts inside by the thread ID anyway, otherwise we wouldn't be able to free the contexts on thread exit. Not sure though what to do if collision where to happen.

-- 
Reply to this email directly or view it on GitLab: https://gitlab.com/gnutls/gnutls/-/merge_requests/1647#note_1114227861
You're receiving this email because of your account on gitlab.com.


-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.gnupg.org/pipermail/gnutls-devel/attachments/20220926/3d42d218/attachment.html>


More information about the Gnutls-devel mailing list