Thread (8 messages) flat view 8 messages, 3 authors, 2016-06-15

Re: Infinite loop in cascade_filter_fn()

From: Carlos Martín Nieto <hidden>
Date: 2016-06-15 22:52:31

On Wed, Nov 23, 2011 at 06:40:47PM +0100, Henrik Grubbström wrote:
Hi.

My git repository walker just got bitten by what seems to be a
reasonably new bug in convert.c:cascade_filter_fn() (git 1.7.8.rc3
(gentoo)).
It looks like it's a bug between cascade_filter_fn and the actual
filter function lf_to_crlf_filter_fn that gets triggered when the
output buffer is too small. In this particular case, *isize_p=378 and
*osize_p=1 which causes cascade_filter_fn to feed the filter data
which it can't process because it doesn't have anywhere to put it.

I think that the function assumes that the output buffer is always
large enough, but there are many indirections, so it might be an
off-by-one.
How to reproduce:

  git clone git@github.com:pikelang/Pike.git

  git checkout -f 0e2080f838c6f0bc7d670ac7549676a353451dca^

  git checkout -f 0e2080f838c6f0bc7d670ac7549676a353451dca

The first two commands complete as expected, while the last hangs forever.
Performing the same with git 1.7.6.4 works as expected.

The problematic file seems to be
/src/modules/_Crypto/rijndael_ecb_vt.txt which has the attributes:
text ident eol=crlf

Thanks,

--
Henrik Grubbström					grubba@grubba.org
Roxen Internet Software AB				grubba@roxen.com
  

Attachments

Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help