Skip to content

Commit

Permalink
Bail out if entity already present on Create()
Browse files Browse the repository at this point in the history
  • Loading branch information
mudler committed Mar 4, 2020
1 parent 269372d commit 359e88b
Show file tree
Hide file tree
Showing 4 changed files with 28 additions and 0 deletions.
7 changes: 7 additions & 0 deletions pkg/entities/group.go
Original file line number Diff line number Diff line change
Expand Up @@ -107,6 +107,13 @@ func (u Group) Delete(s string) error {
}

func (u Group) Create(s string) error {
current, err := ParseGroup(s)
if err != nil {
return errors.Wrap(err, "Failed parsing passwd")
}
if _, ok := current[u.Name]; ok {
return errors.New("Entity already present")
}
permissions, err := permbits.Stat(s)
if err != nil {
return errors.Wrap(err, "Failed getting permissions")
Expand Down
7 changes: 7 additions & 0 deletions pkg/entities/gshadow.go
Original file line number Diff line number Diff line change
Expand Up @@ -104,6 +104,13 @@ func (u GShadow) Delete(s string) error {
}

func (u GShadow) Create(s string) error {
current, err := ParseGShadow(s)
if err != nil {
return errors.Wrap(err, "Failed parsing passwd")
}
if _, ok := current[u.Name]; ok {
return errors.New("Entity already present")
}
permissions, err := permbits.Stat(s)
if err != nil {
return errors.Wrap(err, "Failed getting permissions")
Expand Down
7 changes: 7 additions & 0 deletions pkg/entities/shadow.go
Original file line number Diff line number Diff line change
Expand Up @@ -121,6 +121,13 @@ func (u Shadow) Delete(s string) error {

// FIXME: Create can be shared across all of the supported Entities
func (u Shadow) Create(s string) error {
current, err := ParseShadow(s)
if err != nil {
return errors.Wrap(err, "Failed parsing passwd")
}
if _, ok := current[u.Username]; ok {
return errors.New("Entity already present")
}
permissions, err := permbits.Stat(s)
if err != nil {
return errors.Wrap(err, "Failed getting permissions")
Expand Down
7 changes: 7 additions & 0 deletions pkg/entities/user.go
Original file line number Diff line number Diff line change
Expand Up @@ -68,6 +68,13 @@ func (u UserPasswd) Delete(s string) error {
}

func (u UserPasswd) Create(s string) error {
current, err := passwd.ParseFile(s)
if err != nil {
return errors.Wrap(err, "Failed parsing passwd")
}
if _, ok := current[u.Username]; ok {
return errors.New("Entity already present")
}
permissions, err := permbits.Stat(s)
if err != nil {
return errors.Wrap(err, "Failed getting permissions")
Expand Down

0 comments on commit 359e88b

Please sign in to comment.