From b2ee33bdb9fdc06cb8cf3c2a2848e545c7043ed7 Mon Sep 17 00:00:00 2001
From: Konstantin Osipov <kostja@tarantool.org>
Date: Mon, 6 Jun 2016 20:38:27 +0300
Subject: [PATCH] gh-1419: add checks in box.cfg{} for slab_alloc_minimal, add
 a test case

---
 src/box/box.cc            | 10 ++++++++++
 test/box-tap/cfg.result   |  7 ++++++-
 test/box-tap/cfg.test.lua |  7 ++++++-
 3 files changed, 22 insertions(+), 2 deletions(-)

diff --git a/src/box/box.cc b/src/box/box.cc
index 37c69a7038..e79b7f5d82 100644
--- a/src/box/box.cc
+++ b/src/box/box.cc
@@ -112,6 +112,15 @@ box_check_writable(void)
 		tnt_raise(LoggedError, ER_READONLY);
 }
 
+static void
+box_check_slab_alloc_minimal(ssize_t slab_alloc_minimal)
+{
+
+	if (slab_alloc_minimal < 8 || slab_alloc_minimal > 1048280)
+	tnt_raise(ClientError, ER_CFG, "slab_alloc_minimal",
+		  "specified value is out of bounds");
+}
+
 void
 process_rw(struct request *request, struct tuple **result)
 {
@@ -297,6 +306,7 @@ box_check_config()
 	box_check_readahead(cfg_geti("readahead"));
 	box_check_rows_per_wal(cfg_geti64("rows_per_wal"));
 	box_check_wal_mode(cfg_gets("wal_mode"));
+	box_check_slab_alloc_minimal(cfg_geti64("slab_alloc_minimal"));
 }
 
 /*
diff --git a/test/box-tap/cfg.result b/test/box-tap/cfg.result
index db080630d8..3b5da32a59 100644
--- a/test/box-tap/cfg.result
+++ b/test/box-tap/cfg.result
@@ -1,6 +1,11 @@
 TAP version 13
-1..41
+1..46
 ok - box is not started
+ok - invalid slab_alloc_minimal
+ok - invalid slab_alloc_minimal
+ok - invalid slab_alloc_minimal
+ok - invalid slab_alloc_minimal
+ok - invalid slab_alloc_minimal
 ok - invalid replication_source
 ok - invalid wal_mode
 ok - invalid rows_per_wal
diff --git a/test/box-tap/cfg.test.lua b/test/box-tap/cfg.test.lua
index 6b1b19a083..ac4198f996 100755
--- a/test/box-tap/cfg.test.lua
+++ b/test/box-tap/cfg.test.lua
@@ -4,7 +4,7 @@ local tap = require('tap')
 local test = tap.test('cfg')
 local socket = require('socket')
 local fio = require('fio')
-test:plan(41)
+test:plan(46)
 
 --------------------------------------------------------------------------------
 -- Invalid values
@@ -17,6 +17,11 @@ local function invalid(name, val)
     test:ok(not status and result:match('Incorrect'), 'invalid '..name)
 end
 
+invalid('slab_alloc_minimal', 7)
+invalid('slab_alloc_minimal', 0)
+invalid('slab_alloc_minimal', -1)
+invalid('slab_alloc_minimal', 1048281)
+invalid('slab_alloc_minimal', 1000000000)
 invalid('replication_source', '//guest@localhost:3301')
 invalid('wal_mode', 'invalid')
 invalid('rows_per_wal', -1)
-- 
GitLab