@@ -600,8 +600,9 @@ extern int git_fs_path_from_url_or_path(git_str *local_path_out, const char *url
600600#define GIT_FS_PATH_REJECT_TRAILING_COLON (1 << 6)
601601#define GIT_FS_PATH_REJECT_DOS_PATHS (1 << 7)
602602#define GIT_FS_PATH_REJECT_NT_CHARS (1 << 8)
603+ #define GIT_FS_PATH_REJECT_LONG_PATHS (1 << 9)
603604
604- #define GIT_FS_PATH_REJECT_MAX (1 << 8 )
605+ #define GIT_FS_PATH_REJECT_MAX (1 << 9 )
605606
606607/* Default path safety for writing files to disk: since we use the
607608 * Win32 "File Namespace" APIs ("\\?\") we need to protect from
@@ -632,13 +633,15 @@ extern bool git_fs_path_is_valid_str_ext(
632633 unsigned int flags ,
633634 bool (* validate_char_cb )(char ch , void * payload ),
634635 bool (* validate_component_cb )(const char * component , size_t len , void * payload ),
636+ bool (* validate_length_cb )(const char * component , size_t len , size_t utf8_char_len ),
635637 void * payload );
636638
637639GIT_INLINE (bool ) git_fs_path_is_valid_ext (
638640 const char * path ,
639641 unsigned int flags ,
640642 bool (* validate_char_cb )(char ch , void * payload ),
641643 bool (* validate_component_cb )(const char * component , size_t len , void * payload ),
644+ bool (* validate_length_cb )(const char * component , size_t len , size_t utf8_char_len ),
642645 void * payload )
643646{
644647 const git_str str = GIT_STR_INIT_CONST (path , SIZE_MAX );
@@ -647,6 +650,7 @@ GIT_INLINE(bool) git_fs_path_is_valid_ext(
647650 flags ,
648651 validate_char_cb ,
649652 validate_component_cb ,
653+ validate_length_cb ,
650654 payload );
651655}
652656
@@ -662,15 +666,15 @@ GIT_INLINE(bool) git_fs_path_is_valid(
662666 unsigned int flags )
663667{
664668 const git_str str = GIT_STR_INIT_CONST (path , SIZE_MAX );
665- return git_fs_path_is_valid_str_ext (& str , flags , NULL , NULL , NULL );
669+ return git_fs_path_is_valid_str_ext (& str , flags , NULL , NULL , NULL , NULL );
666670}
667671
668672/** Validate a filesystem path in a `git_str`. */
669673GIT_INLINE (bool ) git_fs_path_is_valid_str (
670674 const git_str * path ,
671675 unsigned int flags )
672676{
673- return git_fs_path_is_valid_str_ext (path , flags , NULL , NULL , NULL );
677+ return git_fs_path_is_valid_str_ext (path , flags , NULL , NULL , NULL , NULL );
674678}
675679
676680/**
0 commit comments