X-Git-Url: http://git.silcnet.org/gitweb/?a=blobdiff_plain;f=lib%2Fsilcacc%2Fsoftacc.c;h=072d7da8280c0ce9bb20135fec03c925d8003968;hb=e7b6c157b80152bf9fb9266e6bdd93f9fb0db776;hp=89c1adaf860b669a71eb12cb9455ad010cf8677e;hpb=1218ffebfc22091283bbd73886c8e7cd734e856f;p=silc.git diff --git a/lib/silcacc/softacc.c b/lib/silcacc/softacc.c index 89c1adaf..072d7da8 100644 --- a/lib/silcacc/softacc.c +++ b/lib/silcacc/softacc.c @@ -165,6 +165,7 @@ SilcBool silc_softacc_init(SilcSchedule schedule, va_list va) sa->tp = silc_thread_pool_alloc(NULL, min_threads, max_threads, TRUE); if (!sa->tp) { silc_free(sa); + sa = NULL; return FALSE; } @@ -233,6 +234,7 @@ SILC_TASK_CALLBACK(silc_softacc_completion) out: silc_sfree(stack, e->src); silc_sfree(stack, e->data); + silc_sfree(stack, e->result_data); silc_sfree(stack, e); silc_stack_free(stack); } @@ -245,7 +247,7 @@ void silc_softacc_data_cb(SilcBool success, const unsigned char *data, SilcSoftaccExec e = context; SilcStack stack = e->stack; - /* Pop e->src and e->data from memory */ + /* Pop e->src */ silc_stack_pop(stack); if (success) @@ -261,7 +263,9 @@ void silc_softacc_verify_cb(SilcBool success, void *context) SilcSoftaccExec e = context; SilcStack stack = e->stack; + /* Pop e->src and e->data from memory */ silc_stack_pop(stack); + e->result = success; } @@ -290,7 +294,7 @@ void silc_softacc_thread(SilcSchedule schedule, void *context) case SILC_SOFTACC_SIGN: silc_pkcs_sign(e->key.private_key, e->src, e->src_len, e->compute_hash, - e->hash, silc_softacc_data_cb, e); + e->hash, e->rng, silc_softacc_data_cb, e); break; case SILC_SOFTACC_VERIFY: @@ -472,6 +476,7 @@ SILC_PKCS_ALG_SIGN(silc_softacc_sign) e->stack = stack; e->type = SILC_SOFTACC_SIGN; + e->rng = rng; e->src = silc_smemdup(stack, src, src_len); e->src_len = src_len; e->compute_hash = compute_hash;