WL#13534: Update bundled libedit to 20190324-3.1
Affects: Server-8.0
—
Status: Complete
Update bundled libedit in MySQL to 20190324-3.1. Current version is some years old. There is a number of bugs fixed by this upgrade: 20770875, 22332089, 22930525, 24432325, 27433491, 27285445 and 28939380. See below for full report on this bugs. Wanted version is found here: https://thrysoee.dk/editline/ Download: https://thrysoee.dk/editline/libedit-20190324-3.1.tar.gz
FR.1: Work as before.
Fr.2: The history should be backwards compatible with the previous history file.
=========================================
Bugs effected by this WL:
Bug#20770875 MISSING READLINE FEATURES WHEN BUILDING WITH EXTERNAL LIBEDIT
LIBRARY
Status: fix verified
Bug#22332089 OFF BY ONE BUG IN LIBEDITLINE
Status: ASAN and UBSAN testing done without any issues found
Bug#22930525 MYSQL CLIENT CRASHES AFTER EDITING
Status: fix verified
Bug#24432325 CTRL-W IS BROKEN IN CLIENT
Status: works as described here: https://www.mankier.com/7/editline
when
$ cat ~/.editrc
mysql:bind -v
is used.
Bug#27433491 SEGMENTATION FAULT IF MULTIBYTE CHARACTER USED IN PROMPT STRING
Status: fix verified
Bug#27285445 CONTRIBUTION: OPENBSD BUILD FIX
Status: fix verified by code inspection
Bug#28939380 MYSQL CLIENT CRASHES IN LIBEDIT/TERMINAL.C
Status: fix verified by code inspection
BUG#89797 Memory Leak
BUG#89798 Memory Leak
https://bugs.mysql.com/bug.php?id=89797
https://bugs.mysql.com/bug.php?id=89798
Status: fixed, problematic code removed
Install the complete tarball (except some binaries which seem to be irrelevant)
Look at .am and .ac files in the bundle, and implement similar build
functionality in cmake.
Look at mysql patches to the old libedit library. These are tagged with XXXMYSQL.
Most of these patches are now irrelevant: adaptations to platforms no longer
supported, or things which have been fixed upstream.
The only mysql patch which seems to be relevant is
Bug#11757855 49967: BUILT-IN LIBEDIT DOESN'T READ .EDITRC ON LINUX
The new libedit library does have configure code, and C macros to use
secure_getenv() if it is available, but the actual code in src/el.c does not use
it. So we do something similar to the patch for Bug#11757855 49967, and fall back
to using getuid() geteuid() getgid() getegid() instead of issetugid()
Copyright (c) 2000, 2025, Oracle Corporation and/or its affiliates. All rights reserved.