51 broke -E logic completely, rewise it
[tfcrypt.git] / tfprng.c
index 24de6fd657a179a9aae7f2bc9e7b49199902799e..4db2418964ab44ad7036221b4105c12c69478fb1 100644 (file)
--- 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)