From e120008f9bab49daff9f01979c87eb2e827f46bb Mon Sep 17 00:00:00 2001 From: Enyby Date: Sun, 3 Nov 2019 16:08:01 +0200 Subject: [PATCH] Validate table.remove `pos`. --- src/core/org/luaj/vm2/lib/TableLib.java | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/core/org/luaj/vm2/lib/TableLib.java b/src/core/org/luaj/vm2/lib/TableLib.java index b77c7a30..086ac8ef 100644 --- a/src/core/org/luaj/vm2/lib/TableLib.java +++ b/src/core/org/luaj/vm2/lib/TableLib.java @@ -126,7 +126,13 @@ public class TableLib extends TwoArgFunction { // "remove" (table [, pos]) -> removed-ele static class remove extends VarArgFunction { public Varargs invoke(Varargs args) { - return args.checktable(1).remove(args.optint(2, 0)); + LuaTable table = args.checktable(1); + int size = table.length(); + int pos = args.optint(2, size); + if (pos != size && (pos < 1 || pos > size + 1)) { + argerror(2, "position out of bounds: " + pos + " not between 1 and " + (size + 1)); + } + return table.remove(pos); } }