diff options
| author | Zuhaitz Méndez Fernández de Aránguiz <zuhaitz@debian> | 2026-01-12 23:55:44 +0000 |
|---|---|---|
| committer | Zuhaitz Méndez Fernández de Aránguiz <zuhaitz@debian> | 2026-01-12 23:55:44 +0000 |
| commit | 4a427b6acf8fcc7ee8d1318faabf147d29d3a866 (patch) | |
| tree | 623f2047aa10134e9044fb899807a51edcb43f4d /std | |
| parent | 291650f52893682bfdb00a359461b6e4d5907a17 (diff) | |
Added hash seed randomizer and fixed truncation bug int variables
Diffstat (limited to 'std')
| -rw-r--r-- | std/core.zc | 2 | ||||
| -rw-r--r-- | std/map.zc | 3 | ||||
| -rw-r--r-- | std/set.zc | 3 | ||||
| -rw-r--r-- | std/time.zc | 9 |
4 files changed, 15 insertions, 2 deletions
diff --git a/std/core.zc b/std/core.zc index daf6a96..bfa82ea 100644 --- a/std/core.zc +++ b/std/core.zc @@ -4,3 +4,5 @@ include <string.h> include <stdio.h> include <stdbool.h> include <stdarg.h> + +var __zen_hash_seed: usize = 14695981039346656037;
\ No newline at end of file @@ -3,8 +3,9 @@ import "./core.zc" import "./option.zc" raw { + extern size_t __zen_hash_seed; size_t _map_hash_str(const char* str) { - size_t hash = 14695981039346656037UL; + size_t hash = __zen_hash_seed; while (*str) { hash ^= (unsigned char)*str++; hash *= 1099511628211UL; @@ -3,8 +3,9 @@ import "./core.zc" import "./option.zc" raw { + extern size_t __zen_hash_seed; size_t _set_hash(const void* data, size_t len) { - size_t hash = 14695981039346656037UL; + size_t hash = __zen_hash_seed; const unsigned char* bytes = (const unsigned char*)data; for (size_t i = 0; i < len; i++) { hash ^= bytes[i]; diff --git a/std/time.zc b/std/time.zc index 72e611a..1191821 100644 --- a/std/time.zc +++ b/std/time.zc @@ -29,7 +29,16 @@ impl Duration { struct Time {} +extern size_t __zen_hash_seed; + impl Time { + fn randomize_hash() { + raw { + srand(time(NULL)); + __zen_hash_seed ^= (size_t)rand(); + } + } + fn now() -> U64 { return _time_now_impl(); } |
