]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
sd-device: use path_compare() rather than strcmp() for sorting paths 22821/head
authorLennart Poettering <lennart@poettering.net>
Tue, 22 Mar 2022 11:58:55 +0000 (12:58 +0100)
committerLennart Poettering <lennart@poettering.net>
Tue, 22 Mar 2022 12:10:41 +0000 (13:10 +0100)
When sorting paths it actually matters to use the right comparison
function. Example:

```
a/x
a-b/y
a_/z
```

I think people would probably expect this:

```
a/x
a-b/y
a_a/z
```

but if you use strcmp() instead of path_compare() you'd instead get:

```
a-b/y
a/x
a_a/z
```

That's because `/` is between `-` and `a` in the ascii table. I think
that's quite confusing, and we shouldn#t order that way hence.

As discussed: https://github.com/systemd/systemd/pull/22662#discussion_r831174776

src/libsystemd/sd-device/device-enumerator.c

index 1379764156ee73f84959654a048d9122e1d1aed8..14794fb3af5393f07650c85fb8ce80321dbfdea1 100644 (file)
@@ -323,7 +323,7 @@ static int device_compare(sd_device * const *a, sd_device * const *b) {
         if (r != 0)
                 return r;
 
-        return strcmp(devpath_a, devpath_b);
+        return path_compare(devpath_a, devpath_b);
 }
 
 static int enumerator_sort_devices(sd_device_enumerator *enumerator) {