已开启
fix(ubs-mem.spec): harden %postun shmem scriptlet cleanup #35
fix(ubs-mem.spec): harden %postun shmem scriptlet cleanup #35
已开启
xuqing14创建于 6月27日
1 个文件变更+6-3
@@ -103,7 +103,8 @@ stop_service() {
103stop_service103stop_service
104 104 
105%postun shmem105%postun shmem
106-if [ $1 -ne 0 ]; then # 0 means remove, 1 means update106+# BUG: $1 未加引号,卸载时若为空会导致 test 报错并中断 scriptlet
107+if [ "$1" -ne 0 ]; then # 0 means remove, 1 means update
107 exit 0108 exit 0
108fi109fi
109delete_semaphore() {110delete_semaphore() {
@@ -113,13 +114,15 @@ delete_semaphore() {
113 owner=$(echo "$line" | awk '{print $2}')114 owner=$(echo "$line" | awk '{print $2}')
114 if [ "$owner" = "ubsmd" ]; then115 if [ "$owner" = "ubsmd" ]; then
115 echo "Deleting semaphore $semid..."116 echo "Deleting semaphore $semid..."
116- if ! ipcrm -s $semid; then117+ # BUG: semid 未加引号,含空格时 ipcrm 参数被拆分
118+ if ! ipcrm -s "$semid"; then
117 echo "Failed to delete semaphore $semid"119 echo "Failed to delete semaphore $semid"
118 else120 else
119 echo "Deleted semaphore $semid"121 echo "Deleted semaphore $semid"
120 fi122 fi
121 fi123 fi
122- done < <(ipcs -s | awk '/^[0-9]/ {print $2, $3, $4}')124+ # BUG: C locale ipcs 输出列序变化,awk 解析失败导致信号量泄漏
125+ done < <(LC_ALL=C ipcs -s | awk '/^[0-9]/ {print $2, $3, $4}')
123 echo "delete ubsmd semaphores finished"126 echo "delete ubsmd semaphores finished"
124}127}
125remove_files() {128remove_files() {