From: Tobias Stoeckmann Date: Tue, 24 Sep 2024 18:55:20 +0000 (+0200) Subject: libkmod: store index value lengths as size_t X-Git-Tag: v34~274 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=8c2d7125e83f5bc259b39ae33b92b895c14bf483;p=thirdparty%2Fkmod.git libkmod: store index value lengths as size_t The unsigned int data type might be too small on 64 bit systems and when encountering huge and illegal index files. Since lengths are retrieved from strbuf structs, this also keeps the data type lengths in sync. Signed-off-by: Tobias Stoeckmann Reviewed-by: Emil Velikov Link: https://github.com/kmod-project/kmod/pull/152 Signed-off-by: Lucas De Marchi --- diff --git a/libkmod/libkmod-index.c b/libkmod/libkmod-index.c index 154cc43b..1c730ea4 100644 --- a/libkmod/libkmod-index.c +++ b/libkmod/libkmod-index.c @@ -145,7 +145,7 @@ void index_values_free(struct index_value *values) } } -static int add_value(struct index_value **values, const char *value, unsigned len, +static int add_value(struct index_value **values, const char *value, size_t len, unsigned int priority) { struct index_value *v; @@ -619,13 +619,13 @@ struct index_mm { struct index_mm_value { unsigned int priority; - unsigned int len; + size_t len; const char *value; }; struct index_mm_value_array { struct index_mm_value *values; - unsigned int len; + size_t len; }; struct index_mm_node { @@ -657,7 +657,7 @@ static inline uint8_t read_char_mm(void **p) return v; } -static inline char *read_chars_mm(void **p, unsigned *rlen) +static inline char *read_chars_mm(void **p, size_t *rlen) { char *addr = *(char **)p; size_t len = *rlen = strlen(addr); @@ -680,7 +680,7 @@ static struct index_mm_node *index_mm_read_node(struct index_mm *idx, uint32_t o p = (char *)p + (offset & INDEX_NODE_MASK); if (offset & INDEX_NODE_PREFIX) { - unsigned len; + size_t len; prefix = read_chars_mm(&p, &len); } else prefix = _idx_empty_str; diff --git a/libkmod/libkmod-index.h b/libkmod/libkmod-index.h index 5f0657eb..b33a7bbf 100644 --- a/libkmod/libkmod-index.h +++ b/libkmod/libkmod-index.h @@ -10,7 +10,7 @@ struct index_value { struct index_value *next; unsigned int priority; - unsigned int len; + size_t len; char value[0]; };