Martin Ågren <martin.agren@xxxxxxxxx> writes: > I looked into this some more. It turns out it is possible to trigger > undefined behavior on "next". Here's what I did: > ... > > This "fixes" the problem: > ... > diff --git a/sha1dc/sha1.c b/sha1dc/sha1.c > index 3dff80a..d6f4c44 100644 > --- a/sha1dc/sha1.c > +++ b/sha1dc/sha1.c > @@ -66,9 +66,9 @@ > ... > With this diff, various tests which seem relevant for SHA-1 pass, > including t0013, and the UBSan-error is gone. The second diff is just > a monkey-patch. I have no reason to believe I will be able to come up > with a proper and complete patch for sha1dc. And I guess such a thing > would not really be Git's patch to carry, either. But at least Git > could consider whether to keep relying on undefined behavior or not. > > There's a fair chance I've mangled the whitespace. I'm using gmail's > web interface... Sorry about that. Thanks. I see Marc Stevens is CC'ed in the thread, so I'd expect that the final "fix" would come from his sha1collisiondetection repository via Ævar. In the meantime, I am wondering if it makes sense to merge the earlier update with #ifdef ALLOW_UNALIGNED_ACCESS and #ifdef SHA1DC_FORCE_LITTLEENDIAN for the v2.13.x maintenance track, which would at least unblock those on platforms v2.13.0 did not work correctly at all. Ævar, thoughts?