Bug 1148347

Summary: "sort" looks at more than the flags specify in non-C locales
Product: Red Hat Enterprise Linux 7 Reporter: Ondrej Vasik <ovasik>
Component: coreutilsAssignee: Ondrej Vasik <ovasik>
Status: CLOSED ERRATA QA Contact: qe-baseos-daemons
Severity: unspecified Docs Contact:
Priority: unspecified    
Version: 7.2CC: admiller, akn.shp+redhat, eblake, extras-qa, goeran, jscotka, kdudka, kzak, ooprala, ovasik, pbrady, p, twaugh
Target Milestone: rc   
Target Release: ---   
Hardware: Unspecified   
OS: Unspecified   
Whiteboard:
Fixed In Version: coreutils-8.22-13.el7 Doc Type: Bug Fix
Doc Text:
Cause: Coreutils i18n downstream patch had several implementation bugs. Consequence: This was causing crashes and wrong functionality of e.g. sort utility in utf-8 locales. C locales were never affected. Fix: Buffer overflows and wrong handling of keys and fields in sorting was fixed. Result: Even when sorting with utf-8 locales, sort works fine with multiple sorting keys and fields.
Story Points: ---
Clone Of: 1146185 Environment:
Last Closed: 2015-11-19 12:44:39 UTC Type: Bug
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:
Bug Depends On: 1146185    
Bug Blocks:    

Description Ondrej Vasik 2014-10-01 08:49:12 UTC
+++ This bug was initially created as a clone of Bug #1146185 +++

Description of problem:
When sorting on one of several fields and using e.g. the en_US.utf8 locale, "sort" looks at more than the specified keys when sorting.

Version-Release number of selected component (if applicable):
coreutils-8.21-20.fc20.x86_64

How reproducible:
Every time

Steps to Reproduce:
1. printf 'a b!x\na-b-c!x\n' | LANG=en_US.utf8 ltrace -e strcoll sort -s --debug -k1,1 -t!

Actual results:
sort: using ‘en_US.utf8’ sorting rules
sort->strcoll("a b!x", "a-b-c!x")                = 21
a-b-c!x
_____
a b!x
___
+++ exited (status 0) +++


Expected results:
sort: using ‘en_US.utf8’ sorting rules
sort->strcoll("a b", "a-b-c")                    = -1
a b!x
___
a-b-c!x
_____
+++ exited (status 0) +++

(That is, strcoll only called on the key, not the whole string, and the output in the opposite order.)

Additional info:
This is shortened version of a bug report I filed upstreams: http://debbugs.gnu.org/cgi/bugreport.cgi?bug=18540  It appears this bug is not present upstreams, but actually introduced in the Fedora packaging.


--- Additional comment from Ondrej Vasik on 2014-09-30 07:52:13 EDT ---

For the reference, Andreas Schwab fixed the bug, https://build.opensuse.org/package/view_file/Base:System/coreutils/sort-keycompare-mb.patch?expand=1 .

Comment 3 Ondrej Vasik 2015-08-19 20:30:13 UTC
*** Bug 1255107 has been marked as a duplicate of this bug. ***

Comment 5 errata-xmlrpc 2015-11-19 12:44:39 UTC
Since the problem described in this bug report should be
resolved in a recent advisory, it has been closed with a
resolution of ERRATA.

For information on the advisory, and where to find the updated
files, follow the link below.

If the solution does not work for you, open a new bug report.

https://rhn.redhat.com/errata/RHBA-2015-2160.html