git: b41b6fdb3a16 - main - flua: lposix: fix WARNS=6 issues

From: Kyle Evans <kevans_at_FreeBSD.org>
Date: Wed, 28 Jan 2026 15:43:37 UTC
The branch main has been updated by kevans:

URL: https://cgit.FreeBSD.org/src/commit/?id=b41b6fdb3a1635de4c2a9280aab12b83e3aeffc5

commit b41b6fdb3a1635de4c2a9280aab12b83e3aeffc5
Author:     Kyle Evans <kevans@FreeBSD.org>
AuthorDate: 2026-01-28 15:37:04 +0000
Commit:     Kyle Evans <kevans@FreeBSD.org>
CommitDate: 2026-01-28 15:43:14 +0000

    flua: lposix: fix WARNS=6 issues
    
    lposix is the last holdout of modules built into flua until we can fix
    the module design to have the right parts require()able.  Address a
    valid bug in lua_read() found at a higher WARNS and drop the override
    entirely.  Some of the modules could possibly be re-evaluated.
    
    Fixes:  c2caf3b3313 ("flua: lposix: add more useful functions [...]")
    Reported by:    des
    Reviewed by:    des
    Sponsored by:   Klara, Inc.
    Sponsored by:   NetApp, Inc.
---
 libexec/flua/Makefile         |  1 -
 libexec/flua/modules/lposix.c | 12 ++++++++----
 2 files changed, 8 insertions(+), 5 deletions(-)

diff --git a/libexec/flua/Makefile b/libexec/flua/Makefile
index f1c46b270ded..c40328d37963 100644
--- a/libexec/flua/Makefile
+++ b/libexec/flua/Makefile
@@ -44,7 +44,6 @@ LUASRC?=	${SRCTOP}/contrib/lua/src
 .PATH: ${LUASRC}
 
 PROG=	flua
-WARNS?=	3
 
 CWARNFLAGS.gcc+=	-Wno-format-nonliteral
 
diff --git a/libexec/flua/modules/lposix.c b/libexec/flua/modules/lposix.c
index 75cdd345aeaa..a25e875045a2 100644
--- a/libexec/flua/modules/lposix.c
+++ b/libexec/flua/modules/lposix.c
@@ -8,6 +8,7 @@
 #include <sys/utsname.h>
 #include <sys/wait.h>
 
+#include <assert.h>
 #include <errno.h>
 #include <fnmatch.h>
 #include <grp.h>
@@ -254,7 +255,7 @@ lua_execp(lua_State *L)
 	}
 	argv[argc + 1] = NULL;
 
-	execvp(file, (char **)argv);
+	execvp(file, __DECONST(char **, argv));
 	error = errno;
 
 	lua_pushnil(L);
@@ -386,7 +387,7 @@ lua_read(lua_State *L)
 	char *buf;
 	ssize_t ret;
 	size_t sz;
-	int error, fd;
+	int error = 0, fd;
 
 	enforce_max_args(L, 2);
 	fd = luaL_checkinteger(L, 1);
@@ -398,8 +399,10 @@ lua_read(lua_State *L)
 	}
 
 	buf = malloc(sz);
-	if (buf == NULL)
+	if (buf == NULL) {
+		error = errno;
 		goto err;
+	}
 
 	/*
 	 * For 0-byte reads, we'll still push the empty string and let the
@@ -412,12 +415,13 @@ lua_read(lua_State *L)
 		error = errno; /* Save to avoid clobber by free() */
 
 	free(buf);
-	if (error != 0)
+	if (ret < 0)
 		goto err;
 
 	/* Just the string pushed. */
 	return (1);
 err:
+	assert(error != 0);
 	lua_pushnil(L);
 	lua_pushstring(L, strerror(error));
 	lua_pushinteger(L, error);