This crash was identified by Cyber Independent Testing Lab:
https://cyber-itl.org/2020/10/28/citl-7000-defects.html
and was introduced with commit
v8.5-163-g3f48829c2
* src/tr.c (validate_case_classes): Don't apply these
extra case alignment checks in the --complement case,
which is even more restrictive as to the contents of SET2.
* tests/misc/tr-case-class.sh: Add a test case,
for a large SET1, which caused the length adjustment
in validate_case_classes to underflow and trigger the assert.
* NEWS: Mention the bug fix.
ls no longer crashes when printing the SELinux context for unstatable files.
[bug introduced in coreutils-6.9.91]
+ tr no longer crashes when using --complement with certain
+ invalid combinations of case character classes.
+ [bug introduced in coreutils-8.6]
+
** Changes in behavior
cp and install now default to copy-on-write (COW) if available.
bool s1_new_element = true;
bool s2_new_element = true;
- if (!s2->has_char_class)
+ if (complement || !s2->has_char_class)
return;
for (int i = 0; i < N_CHARS; i++)
compare exp out || fail=1
fi
+# coreutils 8.6 - 8.32 inclusive, would abort trying to validate the following
+returns_ 1 tr -c '[:upper:]\000-\370' '[:lower:]' < /dev/null || fail=1
+
Exit $fail