diff --git a/package/gluon-core/luasrc/usr/lib/lua/gluon/util.lua b/package/gluon-core/luasrc/usr/lib/lua/gluon/util.lua
index e8b7550be6df02329c3c492c0f0a5eea89a1600e..4b96328362f8bb96ebba131c9ee83e1c9f5e9c34 100644
--- a/package/gluon-core/luasrc/usr/lib/lua/gluon/util.lua
+++ b/package/gluon-core/luasrc/usr/lib/lua/gluon/util.lua
@@ -212,14 +212,21 @@ end
 local function get_wlan_mac_from_driver(uci, radio, vif)
 	local primary = sysconfig.primary_mac:lower()
 
-	local i = 1
-	for addr in get_addresses(uci, radio) do
-		if addr:lower() ~= primary then
-			if i == vif then
-				return addr
-			end
+	local addresses = {}
+	for address in get_addresses(uci, radio) do
+		if address:lower() ~= primary then
+			table.insert(addresses, address)
+		end
+	end
 
-			i = i + 1
+	-- Make sure we have at least 4 addresses
+	if #addresses < 4 then
+		return nil
+	end
+
+	for i, addr in ipairs(addresses) do
+		if i == vif then
+			return addr
 		end
 	end
 end