@@ -1310,28 +1310,27 @@ func getSeUserFromReader(username string, gids []string, r io.Reader, lookupGrou
13101310 lineNum ++
13111311
13121312 // remove any trailing comments, then extra whitespace
1313- parts : = strings .SplitN (line , "#" , 2 )
1314- line = strings .TrimSpace (parts [ 0 ] )
1313+ line , _ , _ = strings .Cut (line , "#" )
1314+ line = strings .TrimSpace (line )
13151315 if line == "" {
13161316 continue
13171317 }
13181318
1319- parts = strings .SplitN (line , ":" , 3 )
1320- if len ( parts ) < 2 {
1319+ userField , rest , ok : = strings .Cut (line , ":" )
1320+ if ! ok {
13211321 return "" , "" , fmt .Errorf ("line %d: malformed line" , lineNum )
13221322 }
1323- userField := parts [0 ]
13241323 if userField == "" {
13251324 return "" , "" , fmt .Errorf ("line %d: user_id or group_id is empty" , lineNum )
13261325 }
1327- seUserField := parts [ 1 ]
1326+ seUserField , rest , ok := strings . Cut ( rest , ":" )
13281327 if seUserField == "" {
13291328 return "" , "" , fmt .Errorf ("line %d: seuser_id is empty" , lineNum )
13301329 }
13311330 var levelField string
13321331 // level is optional
1333- if len ( parts ) > 2 {
1334- levelField = parts [ 2 ]
1332+ if ok {
1333+ levelField = rest
13351334 }
13361335
13371336 // we found a match, return it
@@ -1368,7 +1367,7 @@ func getSeUserFromReader(username string, gids []string, r io.Reader, lookupGrou
13681367
13691368// getSeUserByName returns an SELinux user and MLS level that is
13701369// mapped to a given Linux user.
1371- func getSeUserByName (username string ) (seUser string , level string , err error ) {
1370+ func getSeUserByName (username string ) (string , string , error ) {
13721371 seUsersConf := filepath .Join (policyRoot (), "seusers" )
13731372 confFile , err := os .Open (seUsersConf )
13741373 if err != nil {
@@ -1378,15 +1377,15 @@ func getSeUserByName(username string) (seUser string, level string, err error) {
13781377
13791378 usr , err := user .Lookup (username )
13801379 if err != nil {
1381- return "" , "" , fmt . Errorf ( "failed to lookup user %q" , username )
1380+ return "" , "" , err
13821381 }
13831382 gids , err := usr .GroupIds ()
13841383 if err != nil {
1385- return "" , "" , fmt . Errorf ( "failed to find user %q's groups" , username )
1384+ return "" , "" , err
13861385 }
13871386 gids = append ([]string {usr .Gid }, gids ... )
13881387
1389- seUser , level , err = getSeUserFromReader (username , gids , confFile , user .LookupGroup )
1388+ seUser , level , err : = getSeUserFromReader (username , gids , confFile , user .LookupGroup )
13901389 if err != nil {
13911390 return "" , "" , fmt .Errorf ("failed to parse seusers file: %w" , err )
13921391 }
0 commit comments