diff options
| author | Thomas Schmucker <ts@its1.de> | 2020-06-26 09:03:59 +0200 |
|---|---|---|
| committer | Thomas Schmucker <ts@its1.de> | 2020-06-26 09:03:59 +0200 |
| commit | e0ac05034137f7beaa24f371d4b8bd71584d1a87 (patch) | |
| tree | 256623392f77a47e5cc21d6600152f7986ba9b66 | |
| parent | b492bd3942966e7ba32f3b14e5c95bd0c246c1a3 (diff) | |
| download | libcsv-e0ac05034137f7beaa24f371d4b8bd71584d1a87.tar.gz libcsv-e0ac05034137f7beaa24f371d4b8bd71584d1a87.tar.bz2 libcsv-e0ac05034137f7beaa24f371d4b8bd71584d1a87.zip | |
Vereinfache das Standard-Memory-Handling:
- wir verzichten auf "explicit_bzero()". Wenn ein Client diese Funktion
bei "free()" benötigt, kann dieser einen Custum-Allocator
installieren.
- Vereinfache den Code bei einem Multiplikationsüberlauf ein wenig.
| -rw-r--r-- | csv.c | 18 |
1 files changed, 6 insertions, 12 deletions
| @@ -25,28 +25,22 @@ csv_mem_allocate(size_t n, size_t sz, void *cb_arg) | |||
| 25 | static void * | 25 | static void * |
| 26 | csv_mem_reallocate(void *ptr, size_t n, size_t sz, void *cb_arg) | 26 | csv_mem_reallocate(void *ptr, size_t n, size_t sz, void *cb_arg) |
| 27 | { | 27 | { |
| 28 | size_t len; | ||
| 29 | |||
| 30 | (void) cb_arg; | 28 | (void) cb_arg; |
| 31 | 29 | ||
| 32 | if ( !__builtin_mul_overflow(n, sz, &len) ) { | 30 | size_t len; |
| 33 | return realloc(ptr, len); | 31 | if ( __builtin_mul_overflow(n, sz, &len) ) { |
| 32 | return NULL; | ||
| 34 | } | 33 | } |
| 35 | return NULL; | 34 | return realloc(ptr, len); |
| 36 | } | 35 | } |
| 37 | 36 | ||
| 38 | static void | 37 | static void |
| 39 | csv_mem_free(void *ptr, size_t n, size_t sz, void *cb_arg) | 38 | csv_mem_free(void *ptr, size_t n, size_t sz, void *cb_arg) |
| 40 | { | 39 | { |
| 41 | size_t len; | 40 | (void) n; |
| 42 | 41 | (void) sz; | |
| 43 | void explicit_bzero(void *b, size_t len); | ||
| 44 | |||
| 45 | (void) cb_arg; | 42 | (void) cb_arg; |
| 46 | 43 | ||
| 47 | if ( !__builtin_mul_overflow(n, sz, &len) ) { | ||
| 48 | explicit_bzero(ptr, len); | ||
| 49 | } | ||
| 50 | free(ptr); | 44 | free(ptr); |
| 51 | } | 45 | } |
| 52 | 46 | ||
