Update to Lua 5.4.1

Test: atest -p external/libtextclassifier

Fixes: 165898787
Fixes: 162128313
Fixes: 162128297

Test: atest -p external/libtextclassifier  --all-abi
Change-Id: I7b3c82ba883ed57580e50f16c2f7450592fdec76
diff --git a/src/liolib.c b/src/liolib.c
index 7ac3444..60ab1bf 100644
--- a/src/liolib.c
+++ b/src/liolib.c
@@ -52,6 +52,12 @@
 ** =======================================================
 */
 
+#if !defined(l_checkmodep)
+/* By default, Lua accepts only "r" or "w" as mode */
+#define l_checkmodep(m)	((m[0] == 'r' || m[0] == 'w') && m[1] == '\0')
+#endif
+
+
 #if !defined(l_popen)		/* { */
 
 #if defined(LUA_USE_POSIX)	/* { */
@@ -279,6 +285,7 @@
   const char *filename = luaL_checkstring(L, 1);
   const char *mode = luaL_optstring(L, 2, "r");
   LStream *p = newprefile(L);
+  luaL_argcheck(L, l_checkmodep(mode), 2, "invalid mode");
   p->f = l_popen(L, filename, mode);
   p->closef = &io_pclose;
   return (p->f == NULL) ? luaL_fileresult(L, 0, filename) : 1;