]> git.proxmox.com Git - libgit2.git/commitdiff
crlf: do not ignore GIT_PASSTHROUGH error
authorPatrick Steinhardt <ps@pks.im>
Mon, 22 Feb 2016 12:33:48 +0000 (13:33 +0100)
committerPatrick Steinhardt <ps@pks.im>
Tue, 23 Feb 2016 10:50:23 +0000 (11:50 +0100)
When no payload is set for `crlf_apply` we try to compute the
crlf attributes ourselves with `crlf_check`. When the function
determines that the current file does not require any treatment
we return the GIT_PASSTHROUGH error code without actually
allocating the out-pointer, which indicates the file should not
be passed through the filter.

The `crlf_apply` function explicitly checks for the
GIT_PASSTHROUGH return code and ignores it. This means we will
try to apply the crlf-filter to the current file, leading us to
dereference the unallocated payload-pointer.

Fix this obviously incorrect behavior by not treating
GIT_PASSTHROUGH in any special way. This is the correct thing to
do anyway, as the code indicates that the file should not be
passed through the filter.

src/crlf.c

index f391137c1b4e7770fb06ef1f01e53f1ec82a27e3..5d7510ac7b223018a9c112e97422f496bd306d2e 100644 (file)
@@ -346,7 +346,7 @@ static int crlf_apply(
        /* initialize payload in case `check` was bypassed */
        if (!*payload) {
                int error = crlf_check(self, payload, src, NULL);
-               if (error < 0 && error != GIT_PASSTHROUGH)
+               if (error < 0)
                        return error;
        }