ports/ftp/tnftpd/files/patch-ls_ls.c
Rudolf Čejka 6845ef2aab ftp/tnftpd: Update to 20231001
While I'm here:

- Switch to DISTVERSION as suggested by Porters Handbook
- Make use of NetBSD's CDN and add a few additional mirrors
- Add WWW url
- Add license:

  [1]
  tnftpd contains a mix of BSD2CLAUSE (mostly the NetBSD
  derived code) and BSD3CLAUSE (inherited from the orignal UCB BSD code).

  tnftpd was previously BSD4CLAUSE but that was fixed in the upstream code
  a while ago so I changed the COPYING to reflect that. It's no more
  restrictive than BSD3CLAUSE now.

ChangeLog:

* Release as "tnftpd 20231001".

* Always use $YACC even without --enable-maintainer-mode.

* Update to NetBSD-ftpd 20230930:
	* Fix uninitialized memory usage in count_users().
	* Fix pam_set_item() call with proper struct passed as
	PAM_SOCKADDR.

* Build fixes:
	* Check for inet_net_pton() in -lresolv (for glibc).
	* Improve configure's display of make variables.
	* Remove deprecated autoconf macros.

* Security fixes:
	* CVE-2020-7468: Improve error handling when switching UID/GID.
	* Prevent MLSD and MLST before authentication succeeds.

* Update to NetBSD-ftpd 20230922:
	* Treat failed chdir/chroot for guest and chroot accounts as
	fatal. Also treat failed set{e,}(u,g}id calls as fatal.
	Addresses CVE-2020-7468, via FreeBSD.
	* Improve seteuid error handling, per suggestion by Simon
	Josefsson.
	* Add missing check_login checks for MLST and MLSD.

* Sync libnetbsd replacements with NetBSD upstream:
	* Replace fgetln() with tools/compat implementation that
	handles embedded NULs.
	* Fix inet_net_pton() to avoid integer overflow in bits.
	* Fix inet_ntop() to set errno when returning NULL.
	* Fix inet_pton() to improve hex formatting.
	* Fix sl_add() to not update size unless realloc() succeeds.

* Improve portability on NetBSD by providing own setprogname()
and getprogname(), instead of defining global __progname.

* Update example ftpusers to use example DNS and IP addresses.

* Build fixes:
	* Improve configure's display of detected features.
	* Enable more POSIX extensions.
	* Only replace glob() if required GLOB_ flags aren't available.
	* Only replace fts_open() if required FTS_ flags aren't
	available.

Suggested by:	[1] Luke Mewburn <lukem@NetBSD.org>
PR:		274209
MFH:		2023Q4
2023-11-27 11:46:52 +00:00

35 lines
1.1 KiB
C

Looking at FreeBSD's manual page, it appears that FreeBSD 5.2 changed
the signature of the comparison function:
FTS * fts_open(char * const *path_argv, int options,
int (*compar)(const FTSENT * const *, const FTSENT * const *));
--- ls/ls.c.orig 2009-03-01 22:58:20 UTC
+++ ls/ls.c
@@ -73,7 +73,14 @@ static void display(FTSENT *, FTSENT *);
#include "extern.h"
static void display(FTSENT *, FTSENT *);
+
+/* workaround FreeBSD <fts.h> changing fts_open()'s compar signature */
+#if defined(__FreeBSD__) && defined(USE_FTS_H)
+static int mastercmp(const FTSENT * const *, const FTSENT * const *);
+#else
static int mastercmp(const FTSENT **, const FTSENT **);
+#endif
+
static void traverse(int, char **, int);
static void (*printfcn)(DISPLAY *);
@@ -595,7 +602,11 @@ static int
* All other levels use the sort function. Error entries remain unsorted.
*/
static int
+#if defined(__FreeBSD__) && defined(USE_FTS_H)
+mastercmp(const FTSENT * const *a, const FTSENT * const *b)
+#else
mastercmp(const FTSENT **a, const FTSENT **b)
+#endif
{
int a_info, b_info;