Re: git: c2caf3b3313f - main - flua: lposix: add more useful functions for general purpose scripts

From: Steffen Nurpmeso <steffen_at_sdaoden.eu>
Date: Mon, 30 Sep 2024 19:48:22 UTC
.. i have zero idea (and only look at time), but ..

Kyle Evans wrote in
 <202409300353.48U3rZM7000710@gitrepo.freebsd.org>:
 |commit c2caf3b3313fe73bfc9b4b984c21da8d571f8798
 |Author:     Kyle Evans <kevans@FreeBSD.org>
 |AuthorDate: 2023-03-11 06:03:02 +0000
 |Commit:     Kyle Evans <kevans@FreeBSD.org>
 |CommitDate: 2024-09-30 03:52:20 +0000
 |
 |    flua: lposix: add more useful functions for general purpose scripts
 ...
 |+static int
 |+lua_read(lua_State *L)
 |+{
 |+     char *buf;
 |+     ssize_t ret;
 |+     size_t sz;
 |+     int error, fd, narg;
 |+
 |+     narg = lua_gettop(L);
 |+     luaL_argcheck(L, narg == 2, 1,
 |+         "read takes exactly two arguments (fd, size)");
 |+
 |+     fd = luaL_checkinteger(L, 1);
 |+     sz = luaL_checkinteger(L, 2);
 |+
 |+     if (fd < 0) {
 |+             error = EBADF;
 |+             goto err;
 |+     }
 |+
 |+     buf = malloc(sz);
 |+     if (buf == NULL)
 |+             goto err;
 |+
 |+     /*
 |+      * For 0-byte reads, we'll still push the empty string and let the
 |+      * caller deal with EOF to match lposix semantics.
 |+      */
 |+     ret = read(fd, buf, sz);
 |+     if (ret >= 0)
 |+             lua_pushlstring(L, buf, ret);
 |+     else if (ret < 0)
 |+             error = errno; /* Save to avoid clobber by free() */
 |+
 |+     free(buf);
 |+     if (error != 0)

^ uninit in ret>=0 case.  ("Even clang should get it" (stupid me).)

 |+             goto err;

 |+     /* Just the string pushed. */
 |+     return (1);
 |+err:
 ...

--steffen
|
|Der Kragenbaer,                The moon bear,
|der holt sich munter           he cheerfully and one by one
|einen nach dem anderen runter  wa.ks himself off
|(By Robert Gernhardt)