diff --git a/changes/41484-fix-windows-mdm-profile-upload-panic b/changes/41484-fix-windows-mdm-profile-upload-panic new file mode 100644 index 0000000000..b9b3242dbc --- /dev/null +++ b/changes/41484-fix-windows-mdm-profile-upload-panic @@ -0,0 +1 @@ +- Fixed a server panic when uploading a Windows MDM profile to a team on a free license. diff --git a/server/service/apple_mdm.go b/server/service/apple_mdm.go index 32ffc211f7..a28d9fcea5 100644 --- a/server/service/apple_mdm.go +++ b/server/service/apple_mdm.go @@ -33,6 +33,7 @@ import ( "github.com/fleetdm/fleet/v4/server/authz" "github.com/fleetdm/fleet/v4/server/config" "github.com/fleetdm/fleet/v4/server/contexts/ctxerr" + "github.com/fleetdm/fleet/v4/server/contexts/license" "github.com/fleetdm/fleet/v4/server/contexts/logging" "github.com/fleetdm/fleet/v4/server/contexts/viewer" "github.com/fleetdm/fleet/v4/server/fleet" @@ -364,7 +365,11 @@ func (svc *Service) NewMDMAppleConfigProfile(ctx context.Context, teamID uint, d } var teamName string - if teamID >= 1 { + if teamID > 0 { + lic, _ := license.FromContext(ctx) + if lic == nil || !lic.IsPremium() { + return nil, ctxerr.Wrap(ctx, fleet.ErrMissingLicense) + } tm, err := svc.EnterpriseOverrides.TeamByIDOrName(ctx, &teamID, nil) if err != nil { return nil, ctxerr.Wrap(ctx, err) diff --git a/server/service/windows_mdm_profiles.go b/server/service/windows_mdm_profiles.go index 2ff549be42..0a3268c24b 100644 --- a/server/service/windows_mdm_profiles.go +++ b/server/service/windows_mdm_profiles.go @@ -13,6 +13,7 @@ import ( "github.com/fleetdm/fleet/v4/server/authz" "github.com/fleetdm/fleet/v4/server/contexts/ctxerr" + "github.com/fleetdm/fleet/v4/server/contexts/license" "github.com/fleetdm/fleet/v4/server/fleet" "github.com/fleetdm/fleet/v4/server/mdm/microsoft/syncml" "github.com/fleetdm/fleet/v4/server/platform/endpointer" @@ -33,6 +34,10 @@ func (svc *Service) NewMDMWindowsConfigProfile(ctx context.Context, teamID uint, var teamName string if teamID > 0 { + lic, _ := license.FromContext(ctx) + if lic == nil || !lic.IsPremium() { + return nil, ctxerr.Wrap(ctx, fleet.ErrMissingLicense) + } tm, err := svc.EnterpriseOverrides.TeamByIDOrName(ctx, &teamID, nil) if err != nil { return nil, ctxerr.Wrap(ctx, err)