Skip to content

Commit

Permalink
#152 Added null handling to extract groups.
Browse files Browse the repository at this point in the history
  • Loading branch information
Richard Hessinger committed Jan 21, 2021
1 parent fd9e866 commit ab46957
Showing 1 changed file with 32 additions and 20 deletions.
Expand Up @@ -59,32 +59,44 @@ public override string GetPropertyValue(string propertyName)
public override ISet<string> ExtractGroupNames()
{
var groups = new HashSet<string>(StringComparer.OrdinalIgnoreCase);
foreach (var memberOfObj in this.result.Attributes["memberof"])
try
{
string memberOf = null;
switch(memberOfObj)
{
case byte[] memberOfBytes:
memberOf = InedoLib.UTF8Encoding.GetString(memberOfBytes, 0, memberOfBytes.Length);
break;
case string memberOfStr:
memberOf = memberOfStr;
break;
default:
break;
}
var memberOfAttr = this.result.Attributes["memberof"];
if (memberOfAttr == null)
return groups;

if (!string.IsNullOrWhiteSpace(memberOf))
foreach (var memberOfObj in memberOfAttr)
{
var groupNames = from part in memberOf.Split(',')
where part.StartsWith("CN=", StringComparison.OrdinalIgnoreCase)
let name = part.Substring("CN=".Length)
where !string.IsNullOrWhiteSpace(name)
select name;
if (memberOfObj == null)
continue;
string memberOf = null;
switch (memberOfObj)
{
case byte[] memberOfBytes:
memberOf = InedoLib.UTF8Encoding.GetString(memberOfBytes, 0, memberOfBytes.Length);
break;
case string memberOfStr:
memberOf = memberOfStr;
break;
default:
break;
}

if (!string.IsNullOrWhiteSpace(memberOf))
{
var groupNames = from part in memberOf.Split(',')
where part.StartsWith("CN=", StringComparison.OrdinalIgnoreCase)
let name = part.Substring("CN=".Length)
where !string.IsNullOrWhiteSpace(name)
select name;

groups.UnionWith(groupNames);
groups.UnionWith(groupNames);
}
}
}
catch
{
}

return groups;
}
Expand Down

0 comments on commit ab46957

Please sign in to comment.