sort: fix --debug buffer overrun

* src/sort.c (debug_key): Fix undefined behavior when a key ends
before it starts.  Problem reported by Bruno Haible
<https://bugs.gnu.org/75606>.
This commit is contained in:
Paul Eggert
2025-01-16 09:20:45 -08:00
parent 9c068dae76
commit e07161d4af

View File

@@ -2373,7 +2373,11 @@ debug_key (struct line const *line, struct keyfield const *key)
if (key->sword != SIZE_MAX)
beg = begfield (line, key);
if (key->eword != SIZE_MAX)
lim = limfield (line, key);
{
lim = limfield (line, key);
/* Treat field ends before field starts as empty fields. */
lim = MAX (beg, lim);
}
if ((key->skipsblanks && key->sword == SIZE_MAX)
|| key->month || key_numeric (key))