Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 21 Jan 2019 03:48:30 +0000 (UTC)
From:      Mark Johnston <markj@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-12@freebsd.org
Subject:   svn commit: r343246 - stable/12/usr.bin/cmp
Message-ID:  <201901210348.x0L3mULZ047220@repo.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: markj
Date: Mon Jan 21 03:48:30 2019
New Revision: 343246
URL: https://svnweb.freebsd.org/changeset/base/343246

Log:
  MFC r343245:
  Revert r343117.

Modified:
  stable/12/usr.bin/cmp/cmp.c
Directory Properties:
  stable/12/   (props changed)

Modified: stable/12/usr.bin/cmp/cmp.c
==============================================================================
--- stable/12/usr.bin/cmp/cmp.c	Mon Jan 21 03:47:20 2019	(r343245)
+++ stable/12/usr.bin/cmp/cmp.c	Mon Jan 21 03:48:30 2019	(r343246)
@@ -116,16 +116,14 @@ main(int argc, char *argv[])
 	if (argc < 2 || argc > 4)
 		usage();
 
-	if (caph_limit_stdio() == -1)
-		err(ERR_EXIT, "failed to limit stdio");
-
 	/* Backward compatibility -- handle "-" meaning stdin. */
 	special = 0;
 	if (strcmp(file1 = argv[0], "-") == 0) {
 		special = 1;
-		fd1 = STDIN_FILENO;
+		fd1 = 0;
 		file1 = "stdin";
-	} else if ((fd1 = open(file1, oflag, 0)) < 0 && errno != EMLINK) {
+	}
+	else if ((fd1 = open(file1, oflag, 0)) < 0 && errno != EMLINK) {
 		if (!sflag)
 			err(ERR_EXIT, "%s", file1);
 		else
@@ -136,9 +134,10 @@ main(int argc, char *argv[])
 			errx(ERR_EXIT,
 				"standard input may only be specified once");
 		special = 1;
-		fd2 = STDIN_FILENO;
+		fd2 = 0;
 		file2 = "stdin";
-	} else if ((fd2 = open(file2, oflag, 0)) < 0 && errno != EMLINK) {
+	}
+	else if ((fd2 = open(file2, oflag, 0)) < 0 && errno != EMLINK) {
 		if (!sflag)
 			err(ERR_EXIT, "%s", file2);
 		else
@@ -175,6 +174,16 @@ main(int argc, char *argv[])
 		err(ERR_EXIT, "unable to limit fcntls for %s", file1);
 	if (cap_fcntls_limit(fd2, fcntls) < 0 && errno != ENOSYS)
 		err(ERR_EXIT, "unable to limit fcntls for %s", file2);
+
+	if (!special) {
+		cap_rights_init(&rights);
+		if (caph_rights_limit(STDIN_FILENO, &rights) < 0) {
+			err(ERR_EXIT, "unable to limit stdio");
+		}
+	}
+
+	if (caph_limit_stdout() == -1 || caph_limit_stderr() == -1)
+		err(ERR_EXIT, "unable to limit stdio");
 
 	caph_cache_catpages();
 



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201901210348.x0L3mULZ047220>