diff --git a/package/gluon-autoupdater/check_site.lua b/package/gluon-autoupdater/check_site.lua
index 04c88a13dac3ecc3a4bbca868f5ccb6a4c25b838..aaf1763c3eb0c1cd905868f404c246d3cae0610d 100644
--- a/package/gluon-autoupdater/check_site.lua
+++ b/package/gluon-autoupdater/check_site.lua
@@ -3,8 +3,13 @@ local branches = table_keys(need_table({'autoupdater', 'branches'}, function(bra
 
 	need_string(in_site(extend(branch, {'name'})))
 	need_string_array_match(extend(branch, {'mirrors'}), '^http://')
+
+	local pubkeys = need_string_array_match(in_site(extend(branch, {'pubkeys'})), '^%x+$')
 	need_number(in_site(extend(branch, {'good_signatures'})))
-	need_string_array_match(in_site(extend(branch, {'pubkeys'})), '^%x+$')
+	need(in_site(extend(branch, {'good_signatures'})), function(good_signatures)
+		return good_signatures <= #pubkeys
+	end, nil, string.format('be less than or equal to the number of public keys (%d)', #pubkeys))
+
 	obsolete(in_site(extend(branch, {'probability'})), 'Use GLUON_PRIORITY in site.mk instead.')
 end))