X-Git-Url: https://jxself.org/git/?a=blobdiff_plain;f=tfprng.c;h=4db2418964ab44ad7036221b4105c12c69478fb1;hb=HEAD;hp=24de6fd657a179a9aae7f2bc9e7b49199902799e;hpb=0c9c04e690c76bcaa3c9e96b903fa9b204b0f570;p=tfcrypt.git diff --git a/tfprng.c b/tfprng.c index 24de6fd..4db2418 100644 --- a/tfprng.c +++ b/tfprng.c @@ -19,7 +19,7 @@ void tf_prng_seedkey_r(void *sdata, const void *skey) TF_UNIT_TYPE k[TF_NR_KEY_UNITS]; struct tf_prng_data *rprng = sdata; - memset(rprng, 0, sizeof(struct tf_prng_data)); + memset(rprng, 0, tf_prng_datasize()); if (!skey) return; memcpy(k, skey, TF_KEY_SIZE); @@ -52,7 +52,7 @@ void tf_prng_seed_r(void *sdata, TF_UNIT_TYPE seed) struct tf_prng_data *rprng = sdata; size_t x; - memset(rprng, 0, sizeof(struct tf_prng_data)); + memset(rprng, 0, tf_prng_datasize()); for (x = 0; x < TF_NR_KEY_UNITS; x++) k[x] = seed; tfe_init(&rprng->tfe, k); rprng->init = 1; @@ -85,7 +85,7 @@ TF_UNIT_TYPE tf_prng_range_r(void *sdata, TF_UNIT_TYPE s, TF_UNIT_TYPE d) { TF_UNIT_TYPE c = tf_prng_random_r(sdata); if (d <= s) return s; - return s + c / ((TF_UNIT_TYPE)~0 / (d - s + 1) + 1); + return TF_PRNG_RANGE(c, TF_UNIT_TYPE, s, d); } TF_UNIT_TYPE tf_prng_range(TF_UNIT_TYPE s, TF_UNIT_TYPE d)