diff options
author | Kim Alvefur <zash@zash.se> | 2020-05-29 18:11:42 +0200 |
---|---|---|
committer | Kim Alvefur <zash@zash.se> | 2020-05-29 18:11:42 +0200 |
commit | 73efa2f2f174f699ddb4a56320dc6fbb681e5be1 (patch) | |
tree | 201cf90725615fd50a3a03d260a6aff23a5987a0 | |
parent | 4c70417684d3617a83aacc8cae16078e354ad87b (diff) | |
download | prosody-73efa2f2f174f699ddb4a56320dc6fbb681e5be1.tar.gz prosody-73efa2f2f174f699ddb4a56320dc6fbb681e5be1.zip |
util.ringbuffer: Prevent creation of zero-size buffer
-rw-r--r-- | spec/util_ringbuffer_spec.lua | 5 | ||||
-rw-r--r-- | util-src/ringbuffer.c | 1 |
2 files changed, 6 insertions, 0 deletions
diff --git a/spec/util_ringbuffer_spec.lua b/spec/util_ringbuffer_spec.lua index 5d63b24b..ccb5493a 100644 --- a/spec/util_ringbuffer_spec.lua +++ b/spec/util_ringbuffer_spec.lua @@ -7,6 +7,11 @@ describe("util.ringbuffer", function () it("can be created", function () assert.truthy(rb.new()); end); + it("won't create an empty buffer", function () + assert.has_error(function () + rb.new(0); + end); + end); end); describe(":write", function () local b = rb.new(); diff --git a/util-src/ringbuffer.c b/util-src/ringbuffer.c index 3e17cdf5..f4a51cc9 100644 --- a/util-src/ringbuffer.c +++ b/util-src/ringbuffer.c @@ -198,6 +198,7 @@ static int rb_free(lua_State *L) { static int rb_new(lua_State *L) { size_t size = luaL_optinteger(L, 1, sysconf(_SC_PAGESIZE)); + luaL_argcheck(L, size > 0, 1, "positive integer expected"); ringbuffer *b = lua_newuserdata(L, sizeof(ringbuffer) + size); b->rpos = 0; |