Skip to content

Commit

Permalink
[core] Restrict raw access to stringmap underlying structure
Browse files Browse the repository at this point in the history
  • Loading branch information
teo committed Oct 16, 2023
1 parent 151c3f3 commit 9a9758c
Show file tree
Hide file tree
Showing 5 changed files with 20 additions and 19 deletions.
19 changes: 10 additions & 9 deletions core/server.go
Original file line number Diff line number Diff line change
Expand Up @@ -250,9 +250,10 @@ func (m *RpcServer) GetEnvironments(cxt context.Context, request *pb.GetEnvironm
var defaults, vars, userVars map[string]string
defaults, vars, userVars, err = env.Workflow().ConsolidatedVarMaps()
if err != nil {
defaults = env.GlobalDefaults.Raw()
vars = env.GlobalVars.Raw()
userVars = env.UserVars.Raw()
// take raw of copy, not raw of original because the actual varstack is mutex protected
defaults = env.GlobalDefaults.RawCopy()
vars = env.GlobalVars.RawCopy()
userVars = env.UserVars.RawCopy()
}

isEnvData, ok := integratedServicesEnvsData[id]
Expand Down Expand Up @@ -378,9 +379,9 @@ func (m *RpcServer) NewEnvironment(cxt context.Context, request *pb.NewEnvironme
var defaults, vars, userVars map[string]string
defaults, vars, userVars, err = newEnv.Workflow().ConsolidatedVarMaps()
if err != nil {
defaults = newEnv.GlobalDefaults.Raw()
vars = newEnv.GlobalVars.Raw()
userVars = newEnv.UserVars.Raw()
defaults = newEnv.GlobalDefaults.RawCopy()
vars = newEnv.GlobalVars.RawCopy()
userVars = newEnv.UserVars.RawCopy()
err = nil
}

Expand Down Expand Up @@ -459,9 +460,9 @@ func (m *RpcServer) GetEnvironment(cxt context.Context, req *pb.GetEnvironmentRe
var defaults, vars, userVars map[string]string
defaults, vars, userVars, err = env.Workflow().ConsolidatedVarMaps()
if err != nil {
defaults = env.GlobalDefaults.Raw()
vars = env.GlobalVars.Raw()
userVars = env.UserVars.Raw()
defaults = env.GlobalDefaults.RawCopy()
vars = env.GlobalVars.RawCopy()
userVars = env.UserVars.RawCopy()
}

integratedServicesEnvsData := integration.PluginsInstance().GetEnvironmentsData([]uid.ID{envId})
Expand Down
6 changes: 3 additions & 3 deletions core/serverutil.go
Original file line number Diff line number Diff line change
Expand Up @@ -182,9 +182,9 @@ func workflowToRoleTree(root workflow.Role) (ri *pb.RoleInfo) {
FullPath: root.GetPath(),
TaskIds: tasksToTaskIds(root.GetTasks()),
Roles: childRoleInfos,
Defaults: root.GetDefaults().Raw(),
Vars: root.GetVars().Raw(),
UserVars: root.GetUserVars().Raw(),
Defaults: root.GetDefaults().RawCopy(),
Vars: root.GetVars().RawCopy(),
UserVars: root.GetUserVars().RawCopy(),
ConsolidatedStack: consolidatedVarStack,
}
return
Expand Down
4 changes: 2 additions & 2 deletions core/task/task.go
Original file line number Diff line number Diff line change
Expand Up @@ -288,7 +288,7 @@ func (t *Task) BuildTaskCommand(role parentRole) (err error) {

// We make a copy of the Defaults/Vars maps from the taskClass, this is necessary because
// entries may be templated, so they may resolve to different values in each task.
localDefaults := class.Defaults.Copy().Raw()
localDefaults := class.Defaults.RawCopy()

// We resolve any template expressions in Defaults
defaultFields := template.WrapMapItems(localDefaults)
Expand All @@ -312,7 +312,7 @@ func (t *Task) BuildTaskCommand(role parentRole) (err error) {
return fmt.Errorf("cannot fetch task class defaults for task command info: %w", err)
}

localVars := class.Vars.Copy().Raw()
localVars := class.Vars.RawCopy()

// We resolve any template expressions in Vars
varFields := template.WrapMapItems(localVars)
Expand Down
6 changes: 3 additions & 3 deletions core/task/taskclass/class.go
Original file line number Diff line number Diff line change
Expand Up @@ -144,9 +144,9 @@ func (c *Class) MarshalYAML() (interface{}, error) {

aux := _class{
Name: c.Identifier.Name,
Defaults: c.Defaults.Raw(),
Vars: c.Vars.Raw(),
Properties: c.Properties.Raw(),
Defaults: c.Defaults.RawCopy(),
Vars: c.Vars.RawCopy(),
Properties: c.Properties.RawCopy(),
Wants: c.Wants,
Limits: c.Limits,
Bind: c.Bind,
Expand Down
4 changes: 2 additions & 2 deletions core/workflow/rolebase.go
Original file line number Diff line number Diff line change
Expand Up @@ -261,10 +261,10 @@ func (r *roleBase) MarshalYAML() (interface{}, error) {
aux["constraints"] = r.Constraints
}
if r.Defaults.Raw() != nil {
aux["defaults"] = r.Defaults.Raw()
aux["defaults"] = r.Defaults.RawCopy()
}
if r.Vars.Raw() != nil {
aux["vars"] = r.Vars.Raw()
aux["vars"] = r.Vars.RawCopy()
}
if r.Bind != nil {
aux["bind"] = r.Bind
Expand Down

0 comments on commit 9a9758c

Please sign in to comment.