diff options
author | djm@openbsd.org <djm@openbsd.org> | 2021-01-08 03:44:14 +0100 |
---|---|---|
committer | Damien Miller <djm@mindrot.org> | 2021-01-08 03:50:46 +0100 |
commit | 64ddd0fe68c4a7acf99b78624f8af45e919cd317 (patch) | |
tree | 8260aab5183dbb9537db2602375fe7b985762eb3 /sftp.c | |
parent | upstream: Update the sntrup761 creation script and generated code: (diff) | |
download | openssh-64ddd0fe68c4a7acf99b78624f8af45e919cd317.tar.xz openssh-64ddd0fe68c4a7acf99b78624f8af45e919cd317.zip |
upstream: don't try to use timespeccmp(3) directly as a qsort(3)
comparison function - it returns 0/1 and not the -1/0/1 that qsort expectes.
fixes sftp "ls -ltr" under some circumstances.
Based on patch by Masahiro Matsuya via bz3248.
OpenBSD-Commit-ID: 65b5e9f18bb0d10573868c3516de6e5170adb163
Diffstat (limited to 'sftp.c')
-rw-r--r-- | sftp.c | 7 |
1 files changed, 5 insertions, 2 deletions
@@ -1,4 +1,4 @@ -/* $OpenBSD: sftp.c,v 1.205 2020/12/04 02:41:10 djm Exp $ */ +/* $OpenBSD: sftp.c,v 1.206 2021/01/08 02:44:14 djm Exp $ */ /* * Copyright (c) 2001-2004 Damien Miller <djm@openbsd.org> * @@ -891,7 +891,10 @@ sglob_comp(const void *aa, const void *bb) return (rmul * strcmp(ap, bp)); else if (sort_flag & LS_TIME_SORT) { #if defined(HAVE_STRUCT_STAT_ST_MTIM) - return (rmul * timespeccmp(&as->st_mtim, &bs->st_mtim, <)); + if (timespeccmp(&as->st_mtim, &bs->st_mtim, ==)) + return 0; + return timespeccmp(&as->st_mtim, &bs->st_mtim, <) ? + rmul : -rmul; #elif defined(HAVE_STRUCT_STAT_ST_MTIME) return (rmul * NCMP(as->st_mtime, bs->st_mtime)); #else |