@@ -1210,28 +1210,27 @@ func getSeUserFromReader(username string, gids []string, r io.Reader, lookupGrou
12101210 lineNum ++
12111211
12121212 // remove any trailing comments, then extra whitespace
1213- parts : = strings .SplitN (line , "#" , 2 )
1214- line = strings .TrimSpace (parts [ 0 ] )
1213+ line , _ , _ = strings .Cut (line , "#" )
1214+ line = strings .TrimSpace (line )
12151215 if line == "" {
12161216 continue
12171217 }
12181218
1219- parts = strings .SplitN (line , ":" , 3 )
1220- if len ( parts ) < 2 {
1219+ userField , rest , ok : = strings .Cut (line , ":" )
1220+ if ! ok {
12211221 return "" , "" , fmt .Errorf ("line %d: malformed line" , lineNum )
12221222 }
1223- userField := parts [0 ]
12241223 if userField == "" {
12251224 return "" , "" , fmt .Errorf ("line %d: user_id or group_id is empty" , lineNum )
12261225 }
1227- seUserField := parts [ 1 ]
1226+ seUserField , rest , ok := strings . Cut ( rest , ":" )
12281227 if seUserField == "" {
12291228 return "" , "" , fmt .Errorf ("line %d: seuser_id is empty" , lineNum )
12301229 }
12311230 var levelField string
12321231 // level is optional
1233- if len ( parts ) > 2 {
1234- levelField = parts [ 2 ]
1232+ if ok {
1233+ levelField = rest
12351234 }
12361235
12371236 // we found a match, return it
@@ -1268,7 +1267,7 @@ func getSeUserFromReader(username string, gids []string, r io.Reader, lookupGrou
12681267
12691268// getSeUserByName returns an SELinux user and MLS level that is
12701269// mapped to a given Linux user.
1271- func getSeUserByName (username string ) (seUser string , level string , err error ) {
1270+ func getSeUserByName (username string ) (string , string , error ) {
12721271 seUsersConf := filepath .Join (policyRoot (), "seusers" )
12731272 confFile , err := os .Open (seUsersConf )
12741273 if err != nil {
@@ -1278,15 +1277,15 @@ func getSeUserByName(username string) (seUser string, level string, err error) {
12781277
12791278 usr , err := user .Lookup (username )
12801279 if err != nil {
1281- return "" , "" , fmt . Errorf ( "failed to lookup user %q" , username )
1280+ return "" , "" , err
12821281 }
12831282 gids , err := usr .GroupIds ()
12841283 if err != nil {
1285- return "" , "" , fmt . Errorf ( "failed to find user %q's groups" , username )
1284+ return "" , "" , err
12861285 }
12871286 gids = append ([]string {usr .Gid }, gids ... )
12881287
1289- seUser , level , err = getSeUserFromReader (username , gids , confFile , user .LookupGroup )
1288+ seUser , level , err : = getSeUserFromReader (username , gids , confFile , user .LookupGroup )
12901289 if err != nil {
12911290 return "" , "" , fmt .Errorf ("failed to parse seusers file: %w" , err )
12921291 }
0 commit comments