diff options
author | David Timber <mieabby@gmail.com> | 2020-01-01 08:47:51 +1100 |
---|---|---|
committer | David Timber <mieabby@gmail.com> | 2020-01-01 08:47:51 +1100 |
commit | 6e456edb2757cf9d28d306afb836aa16780fb912 (patch) | |
tree | 2744c874583f03d70ef2aaeb405c74fb5b65ff75 /src/proone_dvault.c | |
parent | 85d78af0cd8b809abc28491c46c648a242053044 (diff) |
checkpoint
Diffstat (limited to 'src/proone_dvault.c')
-rw-r--r-- | src/proone_dvault.c | 22 |
1 files changed, 17 insertions, 5 deletions
diff --git a/src/proone_dvault.c b/src/proone_dvault.c index 0347871..1da09cc 100644 --- a/src/proone_dvault.c +++ b/src/proone_dvault.c @@ -40,9 +40,12 @@ static uint8_t *unmasked_buf = NULL; static size_t unmasked_buf_size = 0; -static void pne_dvault_invert_entry (const proone_data_key_t key) { +static void pne_dvault_invert_entry (const proone_data_key_t key, size_t *len) { const size_t entry_size = proone_dvault_get_entry_size(key); + if (len != NULL) { + *len = entry_size; + } memcpy(unmasked_buf, PROONE_DATA_DICT[key] + 4, entry_size); proone_dvault_invert_mem(entry_size, unmasked_buf, proone_dvault_get_entry_salt(key)); } @@ -134,12 +137,21 @@ void proone_init_dvault (void) { for (i = PROONE_DATA_KEY_NONE + 1; i < NB_PROONE_DATA_KEY; i += 1) { entry_size = proone_dvault_get_entry_size(i); + switch (proone_dvault_get_entry_data_type(i)) { + case PROONE_DATA_TYPE_CSTR: + entry_size += 1; + break; + } + if (entry_size > max_size) { max_size = entry_size; } } - unmasked_buf = malloc(max_size); + if (max_size == 0) { + abort(); + } + unmasked_buf = calloc(max_size, 1); unmasked_buf_size = max_size; if (unmasked_buf == NULL) { abort(); @@ -163,11 +175,11 @@ uint8_t proone_dvault_get_entry_salt (const proone_data_key_t key) { return PROONE_DATA_DICT[key][1]; } -const char *proone_dvault_unmask_entry_cstr (const proone_data_key_t key) { +char *proone_dvault_unmask_entry_cstr (const proone_data_key_t key, size_t *len) { proone_dvault_reset_dict(); pne_dvault_entry_check(key, PROONE_DATA_TYPE_CSTR); - pne_dvault_invert_entry(key); - return (const char*)unmasked_buf; + pne_dvault_invert_entry(key, len); + return (char*)unmasked_buf; } void proone_dvault_reset_dict (void) { |