Skip to content

Commit 542b79f

Browse files
authored
Merge pull request #23 from anarcat/secure-tmp
use a secure temporary directory
2 parents f62c675 + 88aabb3 commit 542b79f

File tree

1 file changed

+24
-18
lines changed

1 file changed

+24
-18
lines changed

teiler

Lines changed: 24 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,11 @@
11
#!/bin/bash
22

3+
if [ -z "$XDG_RUNTIME_DIR" ]; then
4+
TMPDIR=$(mktemp -d)
5+
XDG_RUNTIME_DIR=$TMPDIR
6+
trap 'rm -rf $TMPDIR; exit' INT QUIT HUP TERM 0
7+
fi
8+
39
source /etc/teiler/teiler.conf
410

511
if [[ ! -d $HOME/.config/teiler ]]; then
@@ -81,8 +87,8 @@ vid_filemask="${vid_filemask}.${ext}"
8187
noupload=$save
8288

8389
mainMenu () {
84-
if [[ -f /tmp/__teiler_cast_name ]]; then
85-
filename="$(cat /tmp/__teiler_cast_name)"
90+
if [[ -f $XDG_RUNTIME_DIR/__teiler_cast_name ]]; then
91+
filename="$(cat $XDG_RUNTIME_DIR/__teiler_cast_name)"
8692
fi
8793
isRecording && STATE_RECORDING="2 Stop Recording Screencast"
8894
if [[ "$STATE_RECORDING" == "2 Stop Recording Screencast" ]]; then
@@ -158,7 +164,7 @@ test_xrandr () {
158164
}
159165

160166
screencastMenu () {
161-
filename="$(cat /tmp/__teiler_cast_name)"
167+
filename="$(cat $XDG_RUNTIME_DIR/__teiler_cast_name)"
162168
isRecording && STATE_RECORDING="2 Stop Recording Screencast"
163169
if [[ "$STATE_RECORDING" == "2 Stop Recording Screencast" ]]; then
164170
HELP="<span color='$help_color'>${upload}: Upload | ${save}: No Upload</span>"
@@ -168,20 +174,20 @@ screencastMenu () {
168174
if [[ "$menu" == "< Exit" ]]; then
169175
exit
170176
fi
171-
if [[ $val -eq 10 ]]; then isRecording && stopRecording && sleep 2 && cd "${vid_path}" && teiler_helper --upload video "${filename}" && rm -f /tmp/__teiler_cast_name;
172-
elif [[ $val -eq 11 ]]; then isRecording && stopRecording; rm -f /tmp/__teiler_cast_name; notify-send -a "teiler" "teiler" "Screencast saved"; exit
177+
if [[ $val -eq 10 ]]; then isRecording && stopRecording && sleep 2 && cd "${vid_path}" && teiler_helper --upload video "${filename}" && rm -f $XDG_RUNTIME_DIR/__teiler_cast_name;
178+
elif [[ $val -eq 11 ]]; then isRecording && stopRecording; rm -f $XDG_RUNTIME_DIR/__teiler_cast_name; notify-send -a "teiler" "teiler" "Screencast saved"; exit
173179
elif [[ $val -eq 1 ]]; then exit
174180
elif [[ $val -eq 0 ]]; then
175181
if [[ $always_ul ]]; then isRecording && stopRecording && sleep 2 && cd "${vid_path}" && teiler_helper --upload video "${filename}";
176-
elif [[ $always_ul == "0" ]]; then isRecording && stopRecording; rm -f /tmp/__teiler_cast_name; notify-send -a "teiler" "teiler" "Screencast saved"; exit
182+
elif [[ $always_ul == "0" ]]; then isRecording && stopRecording; rm -f $XDG_RUNTIME_DIR/__teiler_cast_name; notify-send -a "teiler" "teiler" "Screencast saved"; exit
177183
fi
178184
fi
179185

180186
elif [[ -z "$STATE_RECORDING" ]]; then
181187
menu=$(echo -e "< Return to Main Menu\n---\n1 Fullscreen\n2 Area" | roficmd -p "Screencast > ")
182188
val=$?
183189
filename="${vid_filemask}"
184-
echo "${filename}" > /tmp/__teiler_cast_name
190+
echo "${filename}" > $XDG_RUNTIME_DIR/__teiler_cast_name
185191

186192
if [[ $menu == "1 Fullscreen" ]]; then isRecording && stopRecording && sleep 2 || ffmpegCmd fullscreen;
187193
elif [[ $menu == "2 Area" ]]; then isRecording && stopRecording && sleep 2 || ffmpegCmd area;
@@ -238,16 +244,16 @@ isRecording () { [[ -f "$SCREENCAST_PIDFILE" ]] || return 1; }
238244

239245
stopRecording () {
240246
local pid
241-
if [[ -a /tmp/teiler_res ]]; then
242-
res=$(cat /tmp/teiler_res)
247+
if [[ -a $XDG_RUNTIME_DIR/teiler_res ]]; then
248+
res=$(cat $XDG_RUNTIME_DIR/teiler_res)
243249
fi
244250
[[ -f $SCREENCAST_PIDFILE ]] && { pid=$(cat "$SCREENCAST_PIDFILE"); isRecording && kill "$pid"; rm "$SCREENCAST_PIDFILE"; }
245251
notify-send -a "teiler" -t "1" "teiler" "Stopped recording"
246252
if [[ -z $rate ]]; then
247-
output=$(xininfo -name); xrandr --output "$output" --mode "$res"; rm -f /tmp/teiler_res; return 0
253+
output=$(xininfo -name); xrandr --output "$output" --mode "$res"; rm -f $XDG_RUNTIME_DIR/teiler_res; return 0
248254
else
249255
if [[ -n $res ]]; then
250-
output=$(xininfo -name); xrandr --output "$output" --mode "$res" --rate "${rate}"; rm -f /tmp/teiler_res; return 0
256+
output=$(xininfo -name); xrandr --output "$output" --mode "$res" --rate "${rate}"; rm -f $XDG_RUNTIME_DIR/teiler_res; return 0
251257
fi
252258
fi
253259
}
@@ -272,13 +278,13 @@ ffmpegCmd () {
272278

273279
source "$HOME/.config/teiler/profiles/${profile}"
274280

275-
echo "${filename}" > /tmp/__teiler_cast_name
281+
echo "${filename}" > $XDG_RUNTIME_DIR/__teiler_cast_name
276282
if [[ $1 == "fullscreen" ]]; then
277283
isRecording && { notify "$time" 'Screencast already in progress'; echo "Already recording Screen"; exit 1; }
278284
ffmpeg_display=$(echo $DISPLAY)
279285
ffmpeg_offset="$(xininfo -mon-x),$(xininfo -mon-y)"
280286
if [[ -n $res_now ]]; then
281-
echo "$res_now" > /tmp/teiler_res
287+
echo "$res_now" > $XDG_RUNTIME_DIR/teiler_res
282288
fi
283289
if [[ $res_now == $res ]]; then echo " "
284290
else output=$(xininfo -name); xrandr --output "$output" --mode "$res"; sleep 5; fi
@@ -319,22 +325,22 @@ maimCmd () {
319325
}
320326

321327
askPrompt () {
322-
filename="$(cat /tmp/__teiler_cast_name)"
328+
filename="$(cat $XDG_RUNTIME_DIR/__teiler_cast_name)"
323329
isRecording && STATE_RECORDING="Recording"
324330
if [[ -z "$STATE_RECORDING" ]]; then
325331
filename="${vid_filemask}"
326-
echo "${filename}" > /tmp/__teiler_cast_name
332+
echo "${filename}" > $XDG_RUNTIME_DIR/__teiler_cast_name
327333
menu=$(echo -e "< Exit\n---\n1 Fullscreen\n2 Area" | roficmd -p "> ")
328334
if [[ $menu == "1 Fullscreen" ]]; then isRecording && stopRecording && sleep 2 || ffmpegCmd fullscreen;
329335
elif [[ $menu == "2 Area" ]]; then isRecording && stopRecording && sleep 2 || ffmpegCmd area;
330336
elif [[ $menu == "" ]]; then exit
331337
fi
332338
else
333-
filename="$(cat /tmp/__teiler_cast_name)"
339+
filename="$(cat $XDG_RUNTIME_DIR/__teiler_cast_name)"
334340
isRecording && stopRecording && sleep 2
335341
ask=$(echo -e "1 Yes\n2 No" | roficmd -p "Upload? > ")
336-
if [[ $ask == "1 Yes" ]]; then cd "${vid_path}" && teiler_helper --upload video "${filename}" && rm -f /tmp/__teiler_cast_name;
337-
elif [[ $ask == "2 No" ]]; then rm -f /tmp/__teiler_cast_name;
342+
if [[ $ask == "1 Yes" ]]; then cd "${vid_path}" && teiler_helper --upload video "${filename}" && rm -f $XDG_RUNTIME_DIR/__teiler_cast_name;
343+
elif [[ $ask == "2 No" ]]; then rm -f $XDG_RUNTIME_DIR/__teiler_cast_name;
338344
fi
339345
fi
340346
}

0 commit comments

Comments
 (0)