Skip to content

Commit aaf524c

Browse files
committed
Merge branch 'rs/mem-pool-size-t-safety'
size_t arithmetic safety. * rs/mem-pool-size-t-safety: mem-pool: use st_add() in mem_pool_strvfmt()
2 parents dc89c59 + ffeaf2f commit aaf524c

File tree

1 file changed

+4
-2
lines changed

1 file changed

+4
-2
lines changed

mem-pool.c

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -115,6 +115,7 @@ static char *mem_pool_strvfmt(struct mem_pool *pool, const char *fmt,
115115
size_t available = block ? block->end - block->next_free : 0;
116116
va_list cp;
117117
int len, len2;
118+
size_t size;
118119
char *ret;
119120

120121
va_copy(cp, ap);
@@ -123,13 +124,14 @@ static char *mem_pool_strvfmt(struct mem_pool *pool, const char *fmt,
123124
if (len < 0)
124125
BUG("your vsnprintf is broken (returned %d)", len);
125126

126-
ret = mem_pool_alloc(pool, len + 1); /* 1 for NUL */
127+
size = st_add(len, 1); /* 1 for NUL */
128+
ret = mem_pool_alloc(pool, size);
127129

128130
/* Shortcut; relies on mem_pool_alloc() not touching buffer contents. */
129131
if (ret == next_free)
130132
return ret;
131133

132-
len2 = vsnprintf(ret, len + 1, fmt, ap);
134+
len2 = vsnprintf(ret, size, fmt, ap);
133135
if (len2 != len)
134136
BUG("your vsnprintf is broken (returns inconsistent lengths)");
135137
return ret;

0 commit comments

Comments
 (0)