author | Shawn O. Pearce <spearce@spearce.org> | |
Wed, 7 Mar 2007 01:44:37 +0000 (20:44 -0500) | ||
committer | Junio C Hamano <junkio@cox.net> | |
Wed, 7 Mar 2007 19:15:26 +0000 (11:15 -0800) | ||
commit | dc49cd769b5fa6b7e0114b051c34a849828a7603 | |
tree | 7eafafcd36ab731599da3fb5e59d3f4379c342d3 | tree | snapshot |
parent | 6777a59fcdfd96b9ca5cba49cb265c6c47de3d02 | commit | diff |
Cast 64 bit off_t to 32 bit size_t
Some systems have sizeof(off_t) == 8 while sizeof(size_t) == 4.
This implies that we are able to access and work on files whose
maximum length is around 2^63-1 bytes, but we can only malloc or
mmap somewhat less than 2^32-1 bytes of memory.
On such a system an implicit conversion of off_t to size_t can cause
the size_t to wrap, resulting in unexpected and exciting behavior.
Right now we are working around all gcc warnings generated by the
-Wshorten-64-to-32 option by passing the off_t through xsize_t().
In the future we should make xsize_t on such problematic platforms
detect the wrapping and die if such a file is accessed.
Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
Signed-off-by: Junio C Hamano <junkio@cox.net>
Some systems have sizeof(off_t) == 8 while sizeof(size_t) == 4.
This implies that we are able to access and work on files whose
maximum length is around 2^63-1 bytes, but we can only malloc or
mmap somewhat less than 2^32-1 bytes of memory.
On such a system an implicit conversion of off_t to size_t can cause
the size_t to wrap, resulting in unexpected and exciting behavior.
Right now we are working around all gcc warnings generated by the
-Wshorten-64-to-32 option by passing the off_t through xsize_t().
In the future we should make xsize_t on such problematic platforms
detect the wrapping and die if such a file is accessed.
Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
Signed-off-by: Junio C Hamano <junkio@cox.net>
16 files changed:
builtin-apply.c | diff | blob | history | |
builtin-blame.c | diff | blob | history | |
builtin-count-objects.c | diff | blob | history | |
builtin-grep.c | diff | blob | history | |
combine-diff.c | diff | blob | history | |
config.c | diff | blob | history | |
diff.c | diff | blob | history | |
diffcore-break.c | diff | blob | history | |
diffcore-order.c | diff | blob | history | |
diffcore-rename.c | diff | blob | history | |
dir.c | diff | blob | history | |
git-compat-util.h | diff | blob | history | |
read-cache.c | diff | blob | history | |
refs.c | diff | blob | history | |
sha1_file.c | diff | blob | history | |
xdiff-interface.c | diff | blob | history |