'case' UTF-8 bug

Martijn Dekker martijn at inlv.org
Wed Nov 23 17:52:27 UTC 2016


busybox ash in UTF-8 locale does not like the lowercase Greek letter
'rho' (CF 81) in a case statement.

case "ρ" in
( "ρ" ) echo ok ;;
( * )   echo WRONG ;;
esac

outputs WRONG.

The preceding character π (CF 80) is fine, but the succeeding one ς (CF
82) is not. There are other characters with this effect as well but I
haven't had time to test them. I may follow up if I find the time and
detect a pattern.

This is serious; it means 'case' cannot compare arbitrary UTF-8 strings.

Behaviour confirmed in busybox ash version 1.25.0, 1.24.2, 1.24.1,
1.23.2 and 1.20.0, with ash compiled as a standalone on Linux.

Thanks,

- M.


More information about the busybox mailing list