参考所有分组,完成尽量多的内容:收紧 wasm blocker manifest 校验
结论:wasm blocker 分析器现在与 manifest 输入校验一致拒绝缺少 note 或字段数量异常的坏行,并在 blocker self-check 中覆盖该负向路径;未扩展 smoke 功能。
This commit is contained in:
@@ -63,11 +63,21 @@ wasm_safe_shim_in_build() {
|
|||||||
|
|
||||||
core_sources=()
|
core_sources=()
|
||||||
blocked_sources=()
|
blocked_sources=()
|
||||||
while IFS=: read -r group path note extra; do
|
manifest_line_number=0
|
||||||
case "$group" in
|
while IFS= read -r manifest_line || [[ -n "$manifest_line" ]]; do
|
||||||
|
manifest_line_number=$((manifest_line_number + 1))
|
||||||
|
case "$manifest_line" in
|
||||||
""|\#*)
|
""|\#*)
|
||||||
continue
|
continue
|
||||||
;;
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
IFS=: read -r group path note extra <<<"$manifest_line"
|
||||||
|
if [[ -z "$group" || -z "$path" || -z "$note" || -n "${extra:-}" ]]; then
|
||||||
|
echo "bad manifest line $manifest_line_number: $manifest_line" >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
case "$group" in
|
||||||
core)
|
core)
|
||||||
core_sources+=("$path")
|
core_sources+=("$path")
|
||||||
;;
|
;;
|
||||||
|
|||||||
@@ -43,11 +43,13 @@ missing_source_manifest=$(mktemp "${TMPDIR:-/tmp}/cnc_sim_missing_wasm_blocker_m
|
|||||||
missing_source_log=$(mktemp "${TMPDIR:-/tmp}/cnc_sim_missing_wasm_blocker_manifest_source.XXXXXX.log")
|
missing_source_log=$(mktemp "${TMPDIR:-/tmp}/cnc_sim_missing_wasm_blocker_manifest_source.XXXXXX.log")
|
||||||
duplicate_manifest=$(mktemp "${TMPDIR:-/tmp}/cnc_sim_duplicate_wasm_blocker_manifest.XXXXXX.txt")
|
duplicate_manifest=$(mktemp "${TMPDIR:-/tmp}/cnc_sim_duplicate_wasm_blocker_manifest.XXXXXX.txt")
|
||||||
duplicate_manifest_log=$(mktemp "${TMPDIR:-/tmp}/cnc_sim_duplicate_wasm_blocker_manifest.XXXXXX.log")
|
duplicate_manifest_log=$(mktemp "${TMPDIR:-/tmp}/cnc_sim_duplicate_wasm_blocker_manifest.XXXXXX.log")
|
||||||
|
bad_line_manifest=$(mktemp "${TMPDIR:-/tmp}/cnc_sim_bad_wasm_blocker_manifest_line.XXXXXX.txt")
|
||||||
|
bad_line_log=$(mktemp "${TMPDIR:-/tmp}/cnc_sim_bad_wasm_blocker_manifest_line.XXXXXX.log")
|
||||||
missing_replacement_manifest=$(mktemp "${TMPDIR:-/tmp}/cnc_sim_missing_wasm_blocked_replacement.XXXXXX.txt")
|
missing_replacement_manifest=$(mktemp "${TMPDIR:-/tmp}/cnc_sim_missing_wasm_blocked_replacement.XXXXXX.txt")
|
||||||
missing_replacement_log=$(mktemp "${TMPDIR:-/tmp}/cnc_sim_missing_wasm_blocked_replacement.XXXXXX.log")
|
missing_replacement_log=$(mktemp "${TMPDIR:-/tmp}/cnc_sim_missing_wasm_blocked_replacement.XXXXXX.log")
|
||||||
trap 'rm -f "$missing_manifest" "$missing_manifest_log" "$missing_root_log" "$missing_source_manifest" "$missing_source_log" "$duplicate_manifest" "$duplicate_manifest_log" "$missing_replacement_manifest" "$missing_replacement_log"' EXIT
|
trap 'rm -f "$missing_manifest" "$missing_manifest_log" "$missing_root_log" "$missing_source_manifest" "$missing_source_log" "$duplicate_manifest" "$duplicate_manifest_log" "$bad_line_manifest" "$bad_line_log" "$missing_replacement_manifest" "$missing_replacement_log"' EXIT
|
||||||
if ! awk '
|
if ! awk '
|
||||||
/^trap '\''rm -f "\$missing_manifest" "\$missing_manifest_log" "\$missing_root_log" "\$missing_source_manifest" "\$missing_source_log" "\$duplicate_manifest" "\$duplicate_manifest_log" "\$missing_replacement_manifest" "\$missing_replacement_log"'\'' EXIT$/ { found_trap = 1 }
|
/^trap '\''rm -f "\$missing_manifest" "\$missing_manifest_log" "\$missing_root_log" "\$missing_source_manifest" "\$missing_source_log" "\$duplicate_manifest" "\$duplicate_manifest_log" "\$bad_line_manifest" "\$bad_line_log" "\$missing_replacement_manifest" "\$missing_replacement_log"'\'' EXIT$/ { found_trap = 1 }
|
||||||
END { exit !found_trap }
|
END { exit !found_trap }
|
||||||
' test-linuxcnc-wasm-blockers.sh; then
|
' test-linuxcnc-wasm-blockers.sh; then
|
||||||
echo "wasm blocker scan cleanup trap no longer covers fixed blocker temporaries" >&2
|
echo "wasm blocker scan cleanup trap no longer covers fixed blocker temporaries" >&2
|
||||||
@@ -106,6 +108,17 @@ if ! grep -F "duplicate manifest source: src/emc/rs274ngc/interp_arc.cc" "$dupli
|
|||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
printf 'core:src/emc/rs274ngc/interp_arc.cc\n' >"$bad_line_manifest"
|
||||||
|
if ./analyze-linuxcnc-wasm-blockers.sh "$bad_line_manifest" >"$bad_line_log" 2>&1; then
|
||||||
|
echo "wasm blocker analyzer accepted bad manifest line" >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
if ! grep -F "bad manifest line 1: core:src/emc/rs274ngc/interp_arc.cc" "$bad_line_log" >/dev/null; then
|
||||||
|
echo "wasm blocker analyzer did not report bad manifest line clearly" >&2
|
||||||
|
sed -n '1,20p' "$bad_line_log" >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
cat >"$missing_replacement_manifest" <<'EOF'
|
cat >"$missing_replacement_manifest" <<'EOF'
|
||||||
core:src/emc/rs274ngc/interp_arc.cc:core entry
|
core:src/emc/rs274ngc/interp_arc.cc:core entry
|
||||||
blocked:src/emc/tooldata/tooldata_db.cc:blocked entry without wasm replacement
|
blocked:src/emc/tooldata/tooldata_db.cc:blocked entry without wasm replacement
|
||||||
|
|||||||
Reference in New Issue
Block a user