Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 27 Apr 2020 22:50:08 +0000 (UTC)
From:      Kyle Evans <kevans@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-11@freebsd.org
Subject:   svn commit: r360407 - in stable: 11/usr.bin/diff 11/usr.bin/diff/tests 12/usr.bin/diff 12/usr.bin/diff/tests
Message-ID:  <202004272250.03RMo8UG038299@repo.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: kevans
Date: Mon Apr 27 22:50:08 2020
New Revision: 360407
URL: https://svnweb.freebsd.org/changeset/base/360407

Log:
  MFC r357875: diff: fix segfault with --tabsize and no/malformed argument
  
  --tabsize was previously listed as optional_argument, but didn't account for
  the optionality of it in the argument handling. This is irrelevant -- the
  manpage doesn't indicate that the argument is optional, and indeed there's
  no clear interpretation of omitting the argument because there's no other
  side effect of --tabsize.
  
  The "malformed" argument part of the header on this message is simply
  referring to usage like this:
  
  % diff --tabsize 4 A B
  
  With an optional_argument, the argument must be attached to the parameter
  directly (e.g. --tabsize=4), so the argument is effectively NULL with the
  above invocation as if no argument had been passed.
  
  PR:		243974

Modified:
  stable/11/usr.bin/diff/diff.1
  stable/11/usr.bin/diff/diff.c
  stable/11/usr.bin/diff/tests/diff_test.sh
Directory Properties:
  stable/11/   (props changed)

Changes in other areas also in this revision:
Modified:
  stable/12/usr.bin/diff/diff.1
  stable/12/usr.bin/diff/diff.c
  stable/12/usr.bin/diff/tests/diff_test.sh
Directory Properties:
  stable/12/   (props changed)

Modified: stable/11/usr.bin/diff/diff.1
==============================================================================
--- stable/11/usr.bin/diff/diff.1	Mon Apr 27 22:43:24 2020	(r360406)
+++ stable/11/usr.bin/diff/diff.1	Mon Apr 27 22:50:08 2020	(r360407)
@@ -30,7 +30,7 @@
 .\"     @(#)diff.1	8.1 (Berkeley) 6/30/93
 .\" $FreeBSD$
 .\"
-.Dd August 18, 2018
+.Dd April 27, 2020
 .Dt DIFF 1
 .Os
 .Sh NAME
@@ -60,7 +60,7 @@
 .Op Fl -starting-file
 .Op Fl -speed-large-files
 .Op Fl -strip-trailing-cr
-.Op Fl -tabsize
+.Op Fl -tabsize Ar number
 .Op Fl -text
 .Op Fl -unified
 .Op Fl I Ar pattern | Fl -ignore-matching-lines Ar pattern
@@ -88,7 +88,7 @@
 .Op Fl -speed-large-files
 .Op Fl -starting-file
 .Op Fl -strip-trailing-cr
-.Op Fl -tabsize
+.Op Fl -tabsize Ar number
 .Op Fl -text
 .Fl C Ar number | -context Ar number
 .Ar file1 file2
@@ -113,7 +113,7 @@
 .Op Fl -speed-large-files
 .Op Fl -starting-file
 .Op Fl -strip-trailing-cr
-.Op Fl -tabsize
+.Op Fl -tabsize Ar number
 .Op Fl -text
 .Fl D Ar string | Fl -ifdef Ar string
 .Ar file1 file2
@@ -139,7 +139,7 @@
 .Op Fl -speed-large-files
 .Op Fl -starting-file
 .Op Fl -strip-trailing-cr
-.Op Fl -tabsize
+.Op Fl -tabsize Ar number
 .Op Fl -text
 .Fl U Ar number | Fl -unified Ar number
 .Ar file1 file2
@@ -170,7 +170,7 @@
 .Op Fl -show-c-function
 .Op Fl -speed-large-files
 .Op Fl -strip-trailing-cr
-.Op Fl -tabsize
+.Op Fl -tabsize Ar number
 .Op Fl -text
 .Op Fl -unidirectional-new-file
 .Op Fl -unified

Modified: stable/11/usr.bin/diff/diff.c
==============================================================================
--- stable/11/usr.bin/diff/diff.c	Mon Apr 27 22:43:24 2020	(r360406)
+++ stable/11/usr.bin/diff/diff.c	Mon Apr 27 22:50:08 2020	(r360407)
@@ -90,7 +90,7 @@ static struct option longopts[] = {
 	{ "no-ignore-file-name-case",	no_argument,		NULL,	OPT_NO_IGN_FN_CASE },
 	{ "normal",			no_argument,		NULL,	OPT_NORMAL },
 	{ "strip-trailing-cr",		no_argument,		NULL,	OPT_STRIPCR },
-	{ "tabsize",			optional_argument,	NULL,	OPT_TSIZE },
+	{ "tabsize",			required_argument,	NULL,	OPT_TSIZE },
 	{ "changed-group-format",	required_argument,	NULL,	OPT_CHANGED_GROUP_FORMAT},
 	{ NULL,				0,			0,	'\0'}
 };

Modified: stable/11/usr.bin/diff/tests/diff_test.sh
==============================================================================
--- stable/11/usr.bin/diff/tests/diff_test.sh	Mon Apr 27 22:43:24 2020	(r360406)
+++ stable/11/usr.bin/diff/tests/diff_test.sh	Mon Apr 27 22:50:08 2020	(r360407)
@@ -10,6 +10,7 @@ atf_test_case side_by_side
 atf_test_case brief_format
 atf_test_case b230049
 atf_test_case Bflag
+atf_test_case tabsize
 
 simple_body()
 {
@@ -166,6 +167,16 @@ Bflag_body()
 	atf_check -s exit:1 -o file:"$(atf_get_srcdir)/Bflag_F.out" diff -B E F
 }
 
+tabsize_body()
+{
+	printf "\tA\n" > A
+	printf "\tB\n" > B
+
+	atf_check -s exit:1 \
+	    -o inline:"1c1\n<  A\n---\n>  B\n" \
+	    diff -t --tabsize 1 A B
+}
+
 atf_init_test_cases()
 {
 	atf_add_test_case simple
@@ -178,4 +189,5 @@ atf_init_test_cases()
 	atf_add_test_case brief_format
 	atf_add_test_case b230049
 	atf_add_test_case Bflag
+	atf_add_test_case tabsize
 }



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