The unsigned datatype could overflow on 64 bit systems with sufficiently
large index files. Switch to size_t just to be safe.
Since the API of strbuf is not exported, this has no side-effect for
libkmod users.
Signed-off-by: Tobias Stoeckmann <tobias@stoeckmann.org>
Link: https://github.com/kmod-project/kmod/pull/101
Signed-off-by: Lucas De Marchi <lucas.de.marchi@gmail.com>
int fd)
{
struct index_value *v;
- int ch, pushed;
+ size_t pushed;
+ int ch;
pushed = strbuf_pushchars(buf, node->prefix);
const char *subkey,
struct index_value **out)
{
- int pushed = 0;
+ size_t pushed = 0;
int ch;
while (node->prefix[j]) {
int fd)
{
struct index_mm_value *itr, *itr_end;
- int ch, pushed;
+ size_t pushed;
+ int ch;
pushed = strbuf_pushchars(buf, node->prefix);
const char *subkey,
struct index_value **out)
{
- int pushed = 0;
+ size_t pushed = 0;
int ch;
while (node->prefix[j]) {
return true;
}
-unsigned strbuf_pushchars(struct strbuf *buf, const char *str)
+size_t strbuf_pushchars(struct strbuf *buf, const char *str)
{
- unsigned int len;
+ size_t len;
assert(str != NULL);
assert(buf != NULL);
buf->used--;
}
-void strbuf_popchars(struct strbuf *buf, unsigned n)
+void strbuf_popchars(struct strbuf *buf, size_t n)
{
assert(buf->used >= n);
buf->used -= n;
*/
struct strbuf {
char *bytes;
- unsigned size;
- unsigned used;
+ size_t size;
+ size_t used;
};
void strbuf_init(struct strbuf *buf);
const char *strbuf_str(struct strbuf *buf);
bool strbuf_pushchar(struct strbuf *buf, char ch);
-unsigned strbuf_pushchars(struct strbuf *buf, const char *str);
+size_t strbuf_pushchars(struct strbuf *buf, const char *str);
void strbuf_popchar(struct strbuf *buf);
-void strbuf_popchars(struct strbuf *buf, unsigned n);
+void strbuf_popchars(struct strbuf *buf, size_t n);