diff options
| author | Mikhail Osipov <mikhail.osipov@kaspersky.com> | 2020-01-23 15:57:58 +0300 |
|---|---|---|
| committer | Mikhail Osipov <mikhail.osipov@kaspersky.com> | 2020-01-23 17:16:37 +0300 |
| commit | ab3e3860cbb836203ac707ea395af9902d29ad39 (patch) | |
| tree | 7af5c308d372e1aaf48fb99fdfeeceec7366485a /pkg/server | |
| parent | 3145a06d233dfdd4a70cfc706eaaae3abfb937db (diff) | |
check variable name
Diffstat (limited to 'pkg/server')
| -rw-r--r-- | pkg/server/env.go | 34 |
1 files changed, 20 insertions, 14 deletions
diff --git a/pkg/server/env.go b/pkg/server/env.go index 1c24f0b..7fc338d 100644 --- a/pkg/server/env.go +++ b/pkg/server/env.go @@ -1,15 +1,15 @@ package server import ( + "regexp" "sync" ) func init() { - newCmd(envSet, "env", "set") - newCmd(envGet, "env", "get") - newCmd(envUnset, "env", "unset") - - newCmd(envShow, "show", "env") + newCmd(envGet, "env", "get") + newCmd(envSet, "env", "set") + newCmd(envDel, "env", "del") + newCmd(envShow, "env", "show") } type env struct { @@ -17,6 +17,8 @@ type env struct { sync.Mutex } +var isValidVarName = regexp.MustCompile("^[a-zA-Z][a-zA-Z0-9]*$").MatchString + func (e *env) get(key string) (string, bool) { e.Lock() defer e.Unlock() @@ -37,7 +39,7 @@ func (e *env) set(key string, value string) { e.m[key] = value } -func (e *env) unset(key string) bool { +func (e *env) del(key string) bool { e.Lock() defer e.Unlock() @@ -65,12 +67,6 @@ func (e *env) each(f func (string, string) bool) { } } -func envSet(r *request) { - r.expect(2) - - r.c.s.env.set(r.args[0], r.args[1]) -} - func envGet(r *request) { r.expect(1) @@ -81,10 +77,20 @@ func envGet(r *request) { } } -func envUnset(r *request) { +func envSet(r *request) { + r.expect(2) + + if !isValidVarName(r.args[0]) { + r.Fatal("bad variable name") + } + + r.c.s.env.set(r.args[0], r.args[1]) +} + +func envDel(r *request) { r.expect(1) - if !r.c.s.env.unset(r.args[0]) { + if !r.c.s.env.del(r.args[0]) { r.Fatal("no such variable") } } |
