Module Name: src Committed By: nikita Date: Mon Apr 17 21:17:58 UTC 2023
Modified Files: src/external/mit/lua/dist/src: ldump.c lundump.c Log Message: lua: apply upstream bugfix for "Loading a corrupted binary file can segfault." To generate a diff of this commit: cvs rdiff -u -r1.10 -r1.11 src/external/mit/lua/dist/src/ldump.c cvs rdiff -u -r1.9 -r1.10 src/external/mit/lua/dist/src/lundump.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/external/mit/lua/dist/src/ldump.c diff -u src/external/mit/lua/dist/src/ldump.c:1.10 src/external/mit/lua/dist/src/ldump.c:1.11 --- src/external/mit/lua/dist/src/ldump.c:1.10 Sun Apr 16 20:46:17 2023 +++ src/external/mit/lua/dist/src/ldump.c Mon Apr 17 21:17:57 2023 @@ -1,4 +1,4 @@ -/* $NetBSD: ldump.c,v 1.10 2023/04/16 20:46:17 nikita Exp $ */ +/* $NetBSD: ldump.c,v 1.11 2023/04/17 21:17:57 nikita Exp $ */ /* ** Id: ldump.c @@ -14,6 +14,7 @@ #ifndef _KERNEL #include <stddef.h> +#include <limits.h> #endif /* _KERNEL */ #include "lua.h" @@ -59,8 +60,17 @@ static void dumpByte (DumpState *D, int } +#ifdef _KERNEL /* dumpInt Buff Size */ #define DIBS ((sizeof(size_t) * 8 / 7) + 1) +#endif /* _KERNEL */ +#ifndef _KERNEL +/* +** 'dumpSize' buffer size: each byte can store up to 7 bits. (The "+6" +** rounds up the division.) +*/ +#define DIBS ((sizeof(size_t) * CHAR_BIT + 6) / 7) +#endif /* _KERNEL */ static void dumpSize (DumpState *D, size_t x) { lu_byte buff[DIBS]; Index: src/external/mit/lua/dist/src/lundump.c diff -u src/external/mit/lua/dist/src/lundump.c:1.9 src/external/mit/lua/dist/src/lundump.c:1.10 --- src/external/mit/lua/dist/src/lundump.c:1.9 Sun Apr 16 20:46:17 2023 +++ src/external/mit/lua/dist/src/lundump.c Mon Apr 17 21:17:57 2023 @@ -1,4 +1,4 @@ -/* $NetBSD: lundump.c,v 1.9 2023/04/16 20:46:17 nikita Exp $ */ +/* $NetBSD: lundump.c,v 1.10 2023/04/17 21:17:57 nikita Exp $ */ /* ** Id: lundump.c @@ -254,6 +254,8 @@ static void loadDebug (LoadState *S, Pro f->locvars[i].endpc = loadInt(S); } n = loadInt(S); + if (n != 0) /* does it have debug information? */ + n = f->sizeupvalues; /* must be this many */ for (i = 0; i < n; i++) f->upvalues[i].name = loadStringN(S, f); }