From: Junio C Hamano Date: Sat, 19 Jan 2008 07:42:00 +0000 (-0800) Subject: index: be careful when handling long names X-Git-Tag: v1.5.5-rc0~232^2~7 X-Git-Url: https://git.lorimer.id.au/gitweb.git/diff_plain/7fec10b7f41fa32e71aa6377bd04cd7c6fb419e0?ds=inline;hp=7fec10b7f41fa32e71aa6377bd04cd7c6fb419e0 index: be careful when handling long names We currently use lower 12-bit (masked with CE_NAMEMASK) in the ce_flags field to store the length of the name in cache_entry, without checking the length parameter given to create_ce_flags(). This can make us store incorrect length. Currently we are mostly protected by the fact that many codepaths first copy the path in a variable of size PATH_MAX, which typically is 4096 that happens to match the limit, but that feels like a bug waiting to happen. Besides, that would not allow us to shorten the width of CE_NAMEMASK to use the bits for new flags. This redefines the meaning of the name length stored in the cache_entry. A name that does not fit is represented by storing CE_NAMEMASK in the field, and the actual length needs to be computed by actually counting the bytes in the name[] field. This way, only the unusually long paths need to suffer. Signed-off-by: Junio C Hamano Signed-off-by: Linus Torvalds ---