-
-
Notifications
You must be signed in to change notification settings - Fork 2
Add secure clone-demo.sh script with comprehensive safety features #18
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
Co-authored-by: joe10832 <103850533+joe10832@users.noreply.github.com>
joe10832
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@copilot
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Pull Request Overview
This PR introduces a comprehensive security-focused shell script for cloning and setting up demo projects with extensive safety measures to prevent accidental system damage.
- Implements multi-layered directory validation to protect critical system paths
- Adds user confirmation prompts and force mode support for destructive operations
- Provides flexible configuration options for repository URL and target directory
Tip: Customize your code reviews with copilot-instructions.md. Create the file or learn how to get started.
| readonly PROTECTED_DIRS=( | ||
| "/" | ||
| "/bin" | ||
| "/boot" |
Copilot
AI
Sep 24, 2025
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
There's trailing whitespace after '/boot' that should be removed for consistency.
| "/boot" | |
| "/boot" |
| yarn install | ||
| elif command -v npm &> /dev/null; then | ||
| npm install |
Copilot
AI
Sep 24, 2025
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The dependency installation commands lack error handling. If yarn or npm install fails, the script continues without indication of failure, which could lead to an incomplete setup.
| yarn install | |
| elif command -v npm &> /dev/null; then | |
| npm install | |
| if yarn install; then | |
| print_status "$GREEN" "✅ Dependencies installed successfully with yarn." | |
| else | |
| print_status "$RED" "❌ Failed to install dependencies with yarn." | |
| exit 1 | |
| fi | |
| elif command -v npm &> /dev/null; then | |
| if npm install; then | |
| print_status "$GREEN" "✅ Dependencies installed successfully with npm." | |
| else | |
| print_status "$RED" "❌ Failed to install dependencies with npm." | |
| exit 1 | |
| fi |
This PR addresses critical security vulnerabilities in directory removal operations by implementing a secure
clone-demo.shscript with comprehensive safety measures.Key Security Improvements
Enhanced Portability
#!/usr/bin/env bashfor better cross-platform compatibilityset -euo pipefailto prevent script execution with errorsCritical Safety Validation
The script implements multi-layered validation before any directory removal operations:
Comprehensive Protection Against Dangerous Directory Values
/,/home,/usr, etc.readlink -fto resolve and validate absolute pathssafe_remove_directory()with multiple validation layersSecurity Testing Results
The script successfully blocks dangerous operations:
./clone-demo.sh --force /→ "Cannot remove protected directory"./clone-demo.sh --force /home→ "Cannot remove protected directory"./clone-demo.sh --force ""→ "Directory path cannot be empty"./clone-demo.sh --help→ Shows comprehensive usage and safety featuresAdditional Features
The script prevents catastrophic system damage from potentially dangerous
rm -rfcommands while maintaining all existing functionality for legitimate demo setup operations.Fixes #17.
💡 You can make Copilot smarter by setting up custom instructions, customizing its development environment and configuring Model Context Protocol (MCP) servers. Learn more Copilot coding agent tips in the docs.