Skip to content

Commit a4b76a7

Browse files
Add unique temporary directory handling and cleanup to kaijuRun script (#97)
* Add unique temporary directory handling and cleanup to kaijuRun script * Test kaijuRun script Close #96
1 parent 8c57792 commit a4b76a7

File tree

3 files changed

+31
-5
lines changed

3 files changed

+31
-5
lines changed

.github/workflows/run_tests_on_push_pr.yml

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -65,3 +65,10 @@ jobs:
6565
run: |
6666
sudo Xvfb :1 &
6767
DISPLAY=:1 gradle --build-cache test
68+
- name: Test kaijuRun script
69+
env:
70+
GHIDRA_INSTALL_DIR: '${{ github.workspace }}/ghidra_${{ matrix.ghidra_version }}_PUBLIC/'
71+
run: |
72+
cp /bin/ls /tmp/ls
73+
./kaijuRun fn2hash /tmp/ls
74+
test -f /tmp/ls.FnHashes.csv

CHANGELOG.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,10 @@
11
# Current Release
22

3+
## 250610
4+
- Improvements:
5+
* kaijuRun script now uses unique temporary directories to prevent conflicts
6+
* Added automatic cleanup of temporary directories on kaijuRun exit
7+
38
## 250417
49
- Improvements:
510
* Support for Ghidra 11.3.2

kaijuRun

100644100755
Lines changed: 19 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,20 @@ if [ -z "$GHIDRA_INSTALL_DIR" ] ; then
4949
fi
5050

5151
ProgName=$(basename $0)
52+
53+
# Generate a unique temporary directory and project name
54+
TEMP_DIR=$(mktemp -d)
55+
TEMP_PROJ="KaijuHeadlessProj_$$_$(date +%s)"
56+
57+
# Cleanup function to remove temporary directory
58+
cleanup() {
59+
if [ -d "$TEMP_DIR" ]; then
60+
rm -rf "$TEMP_DIR"
61+
fi
62+
}
63+
64+
# Set trap to cleanup on exit
65+
trap cleanup EXIT
5266

5367
sub_help(){
5468
echo "Usage: $ProgName <subcommand> [options]"
@@ -64,7 +78,7 @@ sub_help(){
6478
}
6579

6680
sub_version(){
67-
$GHIDRA_INSTALL_DIR/support/analyzeHeadless /tmp tmpKaijuHeadlessProj -okToDelete -deleteProject -postScript KaijuVersionPrinterHeadless.java
81+
$GHIDRA_INSTALL_DIR/support/analyzeHeadless $TEMP_DIR $TEMP_PROJ -okToDelete -deleteProject -postScript KaijuVersionPrinterHeadless.java
6882
}
6983

7084
sub_fn2hash(){
@@ -89,7 +103,7 @@ sub_fn2hash(){
89103
*)
90104
echo "Running 'fn2hash' subcommand."
91105
echo "First arg is '$1'."
92-
$GHIDRA_INSTALL_DIR/support/analyzeHeadless /tmp tmpKaijuHeadlessProj -okToDelete -deleteProject -import $1 -preScript KaijuSetupScript.java -postScript KaijuExportCSVHeadless.java $1.FnHashes.csv
106+
$GHIDRA_INSTALL_DIR/support/analyzeHeadless $TEMP_DIR $TEMP_PROJ -okToDelete -deleteProject -import $1 -preScript KaijuSetupScript.java -postScript KaijuExportCSVHeadless.java $1.FnHashes.csv
93107
;;
94108
esac
95109
}
@@ -116,7 +130,7 @@ sub_fn2yara(){
116130
*)
117131
echo "Running 'fn2yara' subcommand."
118132
echo "First arg is '$1'."
119-
$GHIDRA_INSTALL_DIR/support/analyzeHeadless /tmp tmpKaijuHeadlessProj -okToDelete -deleteProject -import $1 -preScript KaijuSetupScript.java -postScript KaijuExportYaraHeadless.java $1.yara
133+
$GHIDRA_INSTALL_DIR/support/analyzeHeadless $TEMP_DIR $TEMP_PROJ -okToDelete -deleteProject -import $1 -preScript KaijuSetupScript.java -postScript KaijuExportYaraHeadless.java $1.yara
120134
;;
121135
esac
122136
}
@@ -143,7 +157,7 @@ sub_xrefs(){
143157
*)
144158
echo "Running 'xrefs' subcommand."
145159
echo "First arg is '$1'."
146-
$GHIDRA_INSTALL_DIR/support/analyzeHeadless /tmp tmpKaijuHeadlessProj -okToDelete -deleteProject -import $1 -preScript KaijuSetupScript.java -postScript KaijuExportXrefsToCSVHeadless.java $1.Xref.csv
160+
$GHIDRA_INSTALL_DIR/support/analyzeHeadless $TEMP_DIR $TEMP_PROJ -okToDelete -deleteProject -import $1 -preScript KaijuSetupScript.java -postScript KaijuExportXrefsToCSVHeadless.java $1.Xref.csv
147161
;;
148162
esac
149163
}
@@ -170,7 +184,7 @@ sub_ghihorn(){
170184
*)
171185
echo "Running 'ghihorn' subcommand."
172186
echo "First arg is '$1'."
173-
$GHIDRA_INSTALL_DIR/support/analyzeHeadless /tmp tmpKaijuHeadlessProj -okToDelete -deleteProject -import $1 -preScript KaijuSetupScript.java -postScript GhiHornHeadlessTool.java
187+
$GHIDRA_INSTALL_DIR/support/analyzeHeadless $TEMP_DIR $TEMP_PROJ -okToDelete -deleteProject -import $1 -preScript KaijuSetupScript.java -postScript GhiHornHeadlessTool.java
174188
;;
175189
esac
176190
}

0 commit comments

Comments
 (0)