git: e20971500194 - main - ftpd: stop using -g flag for /bin/ls

From: Allan Jude <allanjude_at_FreeBSD.org>
Date: Tue, 21 May 2024 22:52:58 UTC
The branch main has been updated by allanjude:

URL: https://cgit.FreeBSD.org/src/commit/?id=e20971500194d2f7299e9d01ca3b20e9bc6b4009

commit e20971500194d2f7299e9d01ca3b20e9bc6b4009
Author:     Allan Jude <allanjude@FreeBSD.org>
AuthorDate: 2024-05-21 22:40:12 +0000
Commit:     Allan Jude <allanjude@FreeBSD.org>
CommitDate: 2024-05-21 22:50:14 +0000

    ftpd: stop using -g flag for /bin/ls
    
    In 3bfbb521 the behaviour of ls was changed such that -g was no longer
    a noop for compatibility with BSD 4.3, but instead changed the output
    of long mode to exclude the owner of the file and display only the
    group.
    
    Update how FTPd invokes ls to restore the previous behaviour
    
    Reported-by:    Andrew Fengler <andrew.fengler@scaleengine.com>
    Reviewed-by:    jrtc27, des, imp
    MFC after:      3 days
    Sponsored-by:   ScaleEngine Inc.
    Fixes:          3bfbb521fef5 ("ls: Improve POSIX compatibility for -g and -n.")
---
 libexec/ftpd/ftpcmd.y | 4 ++--
 libexec/ftpd/ftpd.8   | 2 +-
 libexec/ftpd/ftpd.c   | 2 +-
 3 files changed, 4 insertions(+), 4 deletions(-)

diff --git a/libexec/ftpd/ftpcmd.y b/libexec/ftpd/ftpcmd.y
index 742de2f4c086..c090130d8137 100644
--- a/libexec/ftpd/ftpcmd.y
+++ b/libexec/ftpd/ftpcmd.y
@@ -451,12 +451,12 @@ cmd
 	| LIST check_login CRLF
 		{
 			if ($2)
-				retrieve(_PATH_LS " -lgA", "");
+				retrieve(_PATH_LS " -lA", "");
 		}
 	| LIST check_login SP pathstring CRLF
 		{
 			if ($2)
-				retrieve(_PATH_LS " -lgA %s", $4);
+				retrieve(_PATH_LS " -lA %s", $4);
 			free($4);
 		}
 	| STAT check_login SP pathname CRLF
diff --git a/libexec/ftpd/ftpd.8 b/libexec/ftpd/ftpd.8
index fcc5da0b6db1..2241ea78de81 100644
--- a/libexec/ftpd/ftpd.8
+++ b/libexec/ftpd/ftpd.8
@@ -276,7 +276,7 @@ is specified.
 .It EPSV Ta "prepare for server-to-server transfer, multiprotocol"
 .It FEAT Ta "give information on extended features of server"
 .It HELP Ta "give help information"
-.It LIST Ta "give list files in a directory" Pq Dq Li "ls -lgA"
+.It LIST Ta "give list files in a directory" Pq Dq Li "ls -lA"
 .It LPRT Ta "specify data connection port, multiprotocol"
 .It LPSV Ta "prepare for server-to-server transfer, multiprotocol"
 .It MDTM Ta "show last modification time of file"
diff --git a/libexec/ftpd/ftpd.c b/libexec/ftpd/ftpd.c
index 8004d51a4579..f3a1105f6437 100644
--- a/libexec/ftpd/ftpd.c
+++ b/libexec/ftpd/ftpd.c
@@ -2321,7 +2321,7 @@ statfilecmd(char *filename)
 	struct stat st;
 
 	code = lstat(filename, &st) == 0 && S_ISDIR(st.st_mode) ? 212 : 213;
-	(void)snprintf(line, sizeof(line), _PATH_LS " -lgA %s", filename);
+	(void)snprintf(line, sizeof(line), _PATH_LS " -lA %s", filename);
 	fin = ftpd_popen(line, "r");
 	if (fin == NULL) {
 		perror_reply(551, filename);