2021-08-29 Paul Eggert <eggert@cs.ucla.edu>
+ base32, base64: fix broken tests
+ Problem reported by Bruno Haible in:
+ https://lists.gnu.org/r/bug-gnulib/2021-08/msg00170.html
+ * lib/base32.c, lib/base64.c: Do not include verify.h,
+ and omit all uses of ‘assume’.
+ * modules/base32, modules/base64 (Depends-on): Remove verify.
+ * tests/test-base32.c, tests/test-base64.c:
+ Don’t pass out-of-range values to allocator,
+ as converting them to idx_t relies on implementation-defined
+ behavior that could trap.
+
ialloc: relicense
* modules/ialloc (License): Change from LGPL to LGPLv2+.
#include <ialloc.h>
#include <intprops.h>
-#include <verify.h>
/* Get UCHAR_MAX. */
#include <limits.h>
base32_encode_alloc (const char *in, idx_t inlen, char **out)
{
/* Check for overflow in outlen computation. */
- assume (0 <= inlen);
idx_t in_over_5 = inlen / 5 + (inlen % 5 != 0), outlen;
if (! INT_MULTIPLY_OK (in_over_5, 8, &outlen))
{
#include <ialloc.h>
#include <intprops.h>
-#include <verify.h>
/* Get UCHAR_MAX. */
#include <limits.h>
base64_encode_alloc (const char *in, idx_t inlen, char **out)
{
/* Check for overflow in outlen computation. */
- assume (0 <= inlen);
idx_t in_over_3 = inlen / 3 + (inlen % 3 != 0), outlen;
if (! INT_MULTIPLY_OK (in_over_3, 4, &outlen))
{
ialloc
stdbool
memchr
-verify
configure.ac:
gl_FUNC_BASE32
ialloc
stdbool
memchr
-verify
configure.ac:
gl_FUNC_BASE64
ASSERT (strcmp (p, "MFRGGZDFMZTWQ2LKNNWG23TPOA======") == 0);
free (p);
- len = base32_encode_alloc (in, SIZE_MAX - 5, &p);
+ len = base32_encode_alloc (in, IDX_MAX - 5, &p);
ASSERT (len == 0);
/* Decode context function */
ASSERT (strcmp (p, "YWJjZGVmZ2hpamtsbW5vcA==") == 0);
free (p);
- len = base64_encode_alloc (in, SIZE_MAX - 5, &p);
+ len = base64_encode_alloc (in, IDX_MAX - 5, &p);
ASSERT (len == 0);
/* Decode context function */