prefix_ref_iterator: don't trim too much
commitb9c8e7f2fb6ee19defeaa2927a0af42b525d8b33
authorMichael Haggerty <mhagger@alum.mit.edu>
Mon, 22 May 2017 14:17:35 +0000 (22 16:17 +0200)
committerJunio C Hamano <gitster@pobox.com>
Tue, 23 May 2017 05:29:52 +0000 (23 14:29 +0900)
tree95c057da36e50b4b34fe9a48f538020c6fb85b7d
parent04aea8d4df199836da3802f08cb5738eae66fa6c
prefix_ref_iterator: don't trim too much

The `trim` parameter can be set independently of `prefix`. So if some
caller were to set `trim` to be greater than `strlen(prefix)`, we
could end up pointing the `refname` field of the iterator past the NUL
of the actual reference name string.

That can't happen currently, because `trim` is always set either to
zero or to `strlen(prefix)`. But even the latter could lead to
confusion, if a refname is exactly equal to the prefix, because then
we would set the outgoing `refname` to the empty string.

And we're about to decouple the `prefix` and `trim` arguments even
more, so let's be cautious here. Report a bug if ever asked to trim a
reference whose name is not longer than `trim`.

Signed-off-by: Michael Haggerty <mhagger@alum.mit.edu>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
refs/iterator.c