git@vger.kernel.org mailing list mirror (one of many)
 help / color / mirror / code / Atom feed
* [PATCH 1/2] rev-parse: demonstrate overflow of N for "foo^N" and "foo~N"
@ 2019-09-15 12:03 René Scharfe
  2019-09-15 12:10 ` [PATCH 2/2] sha1-name: check for overflow of N in " René Scharfe
  0 siblings, 1 reply; 4+ messages in thread
From: René Scharfe @ 2019-09-15 12:03 UTC (permalink / raw)
  To: Git Mailing List; +Cc: Junio C Hamano

If the number gets too high for an int, weird things may happen, as
signed overflows are undefined.  Add a test to show this; rev-parse
"sucessfully" interprets 100000000000000000000000000000000 to be the
same as 0, at least on x64 with GCC 9.2.1 and Clang 8.0.1, which is
obviously bogus.

Signed-off-by: René Scharfe <l.s.r@web.de>
---
 t/t1506-rev-parse-diagnosis.sh | 8 ++++++++
 1 file changed, 8 insertions(+)

diff --git a/t/t1506-rev-parse-diagnosis.sh b/t/t1506-rev-parse-diagnosis.sh
index 4ee009da66..5c4df47401 100755
--- a/t/t1506-rev-parse-diagnosis.sh
+++ b/t/t1506-rev-parse-diagnosis.sh
@@ -215,4 +215,12 @@ test_expect_success 'arg before dashdash must be a revision (ambiguous)' '
 	test_cmp expect actual
 '

+test_expect_failure 'reject Nth parent if N is too high' '
+	test_must_fail git rev-parse HEAD^100000000000000000000000000000000
+'
+
+test_expect_failure 'reject Nth ancestor if N is too high' '
+	test_must_fail git rev-parse HEAD~100000000000000000000000000000000
+'
+
 test_done
--
2.23.0


^ permalink raw reply related	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2019-09-15 16:12 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2019-09-15 12:03 [PATCH 1/2] rev-parse: demonstrate overflow of N for "foo^N" and "foo~N" René Scharfe
2019-09-15 12:10 ` [PATCH 2/2] sha1-name: check for overflow of N in " René Scharfe
2019-09-15 15:15   ` brian m. carlson
2019-09-15 16:12     ` René Scharfe

Code repositories for project(s) associated with this public inbox

	https://80x24.org/mirrors/git.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).