pub struct TreeEntry {
pub name: Vec<u8>,
pub mode: EntryMode,
pub object_hash: Hash,
}Expand description
A single entry in a Tree object.
Fields§
§name: Vec<u8>Entry name. 1..=255 bytes, no \0 / \\, not . / ...
mode: EntryMode§object_hash: HashImplementations§
Source§impl TreeEntry
impl TreeEntry
Sourcepub fn validate_name(name: &[u8]) -> bool
pub fn validate_name(name: &[u8]) -> bool
Validate an entry name per §4.1.
In addition to the base spec (no \0 / \\, not . / .., 1..=255
bytes), this rejects names that alias repo metadata or exploit
platform quirks:
.mkit/.gitcase-insensitively (Git CVE-2021-21300 family).- Trailing
.or space, which Windows strips, causing aliasing. - Reserved Windows device names (
CON,PRN,AUX,NUL,COM1-COM9,LPT1-LPT9), with or without an extension, case-insensitively.
ASCII case-folding is sufficient because all other byte-level rules above are ASCII-only; names with non-ASCII bytes bypass these extra checks but remain constrained by the base rules.
Trait Implementations§
impl Eq for TreeEntry
impl StructuralPartialEq for TreeEntry
Auto Trait Implementations§
impl Freeze for TreeEntry
impl RefUnwindSafe for TreeEntry
impl Send for TreeEntry
impl Sync for TreeEntry
impl Unpin for TreeEntry
impl UnsafeUnpin for TreeEntry
impl UnwindSafe for TreeEntry
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§impl<T> FutureExt for T
impl<T> FutureExt for T
Source§fn with_context(self, otel_cx: Context) -> WithContext<Self>
fn with_context(self, otel_cx: Context) -> WithContext<Self>
Source§fn with_current_context(self) -> WithContext<Self>
fn with_current_context(self) -> WithContext<Self>
impl<A, B, T> HttpServerConnExec<A, B> for Twhere
B: Body,
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more