mod_storage_internal: Return error if 'before' or 'after' are not found (partial fix for #1325)
authorKim Alvefur <zash@zash.se>
Tue, 05 Mar 2019 00:12:30 +0100
changeset 10022 7408b9473729
parent 10021 994cccebb597
child 10023 c30c81176752
mod_storage_internal: Return error if 'before' or 'after' are not found (partial fix for #1325)
plugins/mod_storage_internal.lua
--- a/plugins/mod_storage_internal.lua	Sun May 26 19:41:58 2019 +0200
+++ b/plugins/mod_storage_internal.lua	Tue Mar 05 00:12:30 2019 +0100
@@ -161,20 +161,30 @@
 		if query.reverse then
 			items:reverse();
 			if query.before then
+				local found = false;
 				for j = 1, #items do
 					if (items[j].key or tostring(j)) == query.before then
+						found = true;
 						i = j;
 						break;
 					end
 				end
+				if not found then
+					return nil, "item-not-found";
+				end
 			end
 		elseif query.after then
+			local found = false;
 			for j = 1, #items do
 				if (items[j].key or tostring(j)) == query.after then
+					found = true;
 					i = j;
 					break;
 				end
 			end
+			if not found then
+				return nil, "item-not-found";
+			end
 		end
 		if query.limit and #items - i > query.limit then
 			items[i+query.limit+1] = nil;