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

Re: [PATCH 2/3] read-cache: use get_be32 instead of hand-rolled ntoh_l

From: Jonathan Nieder <hidden>
Date: 2016-06-15 22:59:44

Jeff King wrote:
This _might_ still suffer from the issue fixed in 5f6a112 (block-sha1:
avoid pointer conversion that violates alignment constraints,
2012-07-22), as we are taking the pointer of a uint32 in a struct.
No conversion, so no issue there.

Line 1484 looks more problematic:

		disk_ce = (struct ondisk_cache_entry *)((char *)mmap + src_offset);

In v4 indexes, src_offset doesn't have any particular alignment so
this conversion has undefined behavior.

Do you know if any tests exercise this code with paths that don't
have convenient length?

[...]
I'm inclined to leave it for now, as we haven't made anything worse, and
nobody has reported a problem.
Yeah, agreed.

Probably the simplest fix would be to take a char *, memcpy into a
new (aligned) buffer and then byteswap in place, but that's
orthogonal to this series.

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