chiark / gitweb /
core/namespace: fix path sorting
authorMichal Schmidt <mschmidt@redhat.com>
Mon, 16 Mar 2015 21:04:21 +0000 (22:04 +0100)
committerMichal Schmidt <mschmidt@redhat.com>
Mon, 16 Mar 2015 21:17:15 +0000 (22:17 +0100)
commita0827e2b123010c46cfe4f03eebba57d92f9efc4
tree99610ff3e46d55482771b3c2aeeb18fe5a8d94d6
parent2230852bd9755e1b7bfd1260082471f559b0a005
core/namespace: fix path sorting

The comparison function we use for qsorting paths is overly indifferent.
Consider these 3 paths for sorting:
 /foo
 /bar
 /foo/foo
qsort() may compare:
 "/foo" with "/bar" => 0, indifference
 "/bar" with "/foo/foo" => 0, indifference
and assume transitively that "/foo" and "/foo/foo" are also indifferent.

But this is wrong, we want "/foo" sorted before "/foo/foo".
The comparison function must be transitive.

Use path_compare(), which behaves properly.

Fixes: https://bugzilla.redhat.com/show_bug.cgi?id=1184016
src/core/namespace.c