-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathtest_strings.sh
More file actions
95 lines (73 loc) · 2.44 KB
/
test_strings.sh
File metadata and controls
95 lines (73 loc) · 2.44 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
#!/bin/bash
# 字符串安全測試腳本
echo "🔤 開始字符串安全測試..."
cd build
# 1. 測試配置文件解析的字符串安全性
echo "📖 測試配置文件字符串解析..."
# 創建測試配置文件
cat > test_config.conf << 'EOF'
# 測試正常配置
[Process]
Master = andromeda:master process
Worker = andromeda:worker process
# 測試長字符串(邊界測試)
[Net]
Port0 = 9000
VeryLongConfigName = ThisIsAVeryLongConfigurationValueThatShouldBeHandledSafelyWithoutCausingBufferOverflowsOrMemoryIssues
# 測試特殊字符
[Test]
SpecialChars = @#$%^&*(){}[]|\\:";'<>?,./
EmptyValue =
EOF
echo "✅ 測試配置文件已創建"
# 2. 測試進程標題的字符串處理
echo "🏷️ 測試進程標題字符串處理..."
# 使用長標題啟動服務器
./andromeda &
SERVER_PID=$!
sleep 3
# 檢查進程是否正常運行
if kill -0 $SERVER_PID 2>/dev/null; then
echo "✅ 長進程標題處理正常"
else
echo "❌ 進程標題處理可能有問題"
fi
# 3. 測試網路輸入的字符串安全性
echo "🌐 測試網路輸入字符串安全性..."
# 測試正常輸入
echo "normal test" | timeout 2s nc localhost 9000 2>/dev/null || true
# 測試長輸入
python3 -c "print('A' * 1000)" | timeout 2s nc localhost 9000 2>/dev/null || true
# 測試包含空字符的輸入
printf "test\x00null\x00terminated" | timeout 2s nc localhost 9000 2>/dev/null || true
# 測試二進制數據
python3 -c "import sys; sys.stdout.buffer.write(b'\\x01\\x02\\x03\\x04\\x05' * 100)" | timeout 2s nc localhost 9000 2>/dev/null || true
sleep 2
# 檢查服務器是否仍在運行
if kill -0 $SERVER_PID 2>/dev/null; then
echo "✅ 服務器在各種輸入測試後仍正常運行"
else
echo "❌ 服務器在輸入測試後崩潰"
fi
# 4. 測試日誌字符串處理
echo "📝 測試日誌字符串處理..."
# 檢查日誌文件是否正常
if [ -f "logs/error.log" ]; then
# 檢查日誌是否包含異常字符或截斷
LOG_SIZE=$(wc -c < logs/error.log)
if [ $LOG_SIZE -gt 0 ]; then
echo "✅ 日誌文件正常寫入 ($LOG_SIZE 字節)"
# 檢查最新的日誌條目
echo "📄 最新日誌條目:"
tail -3 logs/error.log
else
echo "⚠️ 日誌文件為空"
fi
else
echo "⚠️ 未找到日誌文件"
fi
# 清理
kill -TERM $SERVER_PID 2>/dev/null || true
wait $SERVER_PID 2>/dev/null || true
rm -f test_config.conf
echo "🎯 字符串安全測試完成"