refactor(bare): enhance security and performance optimizations
- Remove unnecessary sorting in advertise_refs for deterministic output - Add path traversal detection and validation in bare_dir construction - Implement symlink resolution checks to prevent security vulnerabilities - Refactor cache system with CRC validation and improved metrics - Integrate repo-specific cache invalidation using indexed keys - Add comprehensive unit tests for commit operations and diff functionality - Move configuration constants to centralized config module - Optimize string operations in disk cache random value generation - Enhance license detection algorithm with cleaner matching logic - Streamline argument processing in various git operations - Update dependencies including crc32fast and flate2 for performance - Add signal handling capability to tokio runtime configuration
This commit is contained in:
@@ -367,14 +367,12 @@ impl GitBare {
|
||||
)));
|
||||
}
|
||||
|
||||
// Split combined patch output by "diff --git" headers
|
||||
let mut map = HashMap::new();
|
||||
let output = &result.stdout;
|
||||
let header = b"diff --git ";
|
||||
let mut chunks: Vec<&[u8]> = Vec::new();
|
||||
let mut pos = 0;
|
||||
|
||||
// Find all header positions
|
||||
let mut header_positions = Vec::new();
|
||||
while let Some(idx) = output[pos..]
|
||||
.windows(header.len())
|
||||
@@ -390,7 +388,6 @@ impl GitBare {
|
||||
}
|
||||
|
||||
for chunk in chunks {
|
||||
// Extract file path from "diff --git a/path b/path\n"
|
||||
let first_line_end = chunk
|
||||
.iter()
|
||||
.position(|&b| b == b'\n')
|
||||
|
||||
Reference in New Issue
Block a user