04a1cc0469099f955c08c5fe1a57b338ee3242b7
[fw/openocd] / src / server / startup.tcl
1 # Defines basic Tcl procs for OpenOCD server modules
2
3 # Handle GDB 'R' packet. Can be overridden by configuration script,
4 # but it's not something one would expect target scripts to do
5 # normally
6 proc ocd_gdb_restart {target_id} {
7         # Fix!!! we're resetting all targets here! Really we should reset only
8         # one target
9         reset halt
10 }
11
12 proc prevent_cps {} {
13         echo "Possible SECURITY ATTACK detected."
14         echo "It looks like somebody is sending POST or Host: commands to OpenOCD."
15         echo "This is likely due to an attacker attempting to use Cross Protocol Scripting"
16         echo "to compromise your OpenOCD instance. Connection aborted."
17         exit
18 }
19
20 proc POST {args} { prevent_cps }
21 proc Host: {args} { prevent_cps }
22
23 # list of commands we don't want to appear in autocomplete
24 lappend _telnet_autocomplete_skip _telnet_autocomplete_helper
25
26 # helper for telnet autocomplete
27 proc _telnet_autocomplete_helper pattern {
28         set cmds [info commands $pattern]
29
30         # skip matches in variable '_telnet_autocomplete_skip'
31         foreach skip $::_telnet_autocomplete_skip {
32                 foreach n [lsearch -all -regexp $cmds "^$skip\$"] {
33                         set cmds [lreplace $cmds $n $n]
34                 }
35         }
36
37         return [lsort $cmds]
38 }