Repository: incubator-ranger Updated Branches: refs/heads/master ddf9cfa74 -> 405c51853
RANGER-320: Usersync NPE when object does not have userNameAttribute Project: http://git-wip-us.apache.org/repos/asf/incubator-ranger/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-ranger/commit/405c5185 Tree: http://git-wip-us.apache.org/repos/asf/incubator-ranger/tree/405c5185 Diff: http://git-wip-us.apache.org/repos/asf/incubator-ranger/diff/405c5185 Branch: refs/heads/master Commit: 405c518531f63dd932791f9e5f0f6214aa7bd0a8 Parents: ddf9cfa Author: Dilli Dorai Arumugam <[email protected]> Authored: Thu Mar 19 10:36:43 2015 -0700 Committer: Dilli Dorai Arumugam <[email protected]> Committed: Mon Mar 23 21:01:13 2015 -0700 ---------------------------------------------------------------------- .../process/LdapUserGroupBuilder.java | 41 ++++++++++++++++++-- 1 file changed, 37 insertions(+), 4 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/405c5185/ugsync/src/main/java/org/apache/ranger/ldapusersync/process/LdapUserGroupBuilder.java ---------------------------------------------------------------------- diff --git a/ugsync/src/main/java/org/apache/ranger/ldapusersync/process/LdapUserGroupBuilder.java b/ugsync/src/main/java/org/apache/ranger/ldapusersync/process/LdapUserGroupBuilder.java index b6bb811..011170c 100644 --- a/ugsync/src/main/java/org/apache/ranger/ldapusersync/process/LdapUserGroupBuilder.java +++ b/ugsync/src/main/java/org/apache/ranger/ldapusersync/process/LdapUserGroupBuilder.java @@ -31,6 +31,7 @@ import javax.naming.Context; import javax.naming.InvalidNameException; import javax.naming.NamingEnumeration; import javax.naming.directory.Attribute; +import javax.naming.directory.Attributes; import javax.naming.directory.SearchControls; import javax.naming.directory.SearchResult; import javax.naming.ldap.Control; @@ -274,10 +275,42 @@ public class LdapUserGroupBuilder implements UserGroupSource { while (userSearchResultEnum.hasMore()) { // searchResults contains all the user entries final SearchResult userEntry = userSearchResultEnum.next(); - String userName = (String) userEntry.getAttributes() - .get(userNameAttribute).get(); - - + + if (userEntry == null) { + if (LOG.isInfoEnabled()) { + LOG.info("userEntry null, skipping sync for the entry"); + } + continue; + } + + Attributes attributes = userEntry.getAttributes(); + if (attributes == null) { + if (LOG.isInfoEnabled()) { + LOG.info("attributes missing for entry " + userEntry.getNameInNamespace() + + ", skipping sync"); + } + continue; + } + + Attribute userNameAttr = attributes.get(userNameAttribute); + if (userNameAttr == null) { + if (LOG.isInfoEnabled()) { + LOG.info(userNameAttribute + " missing for entry " + userEntry.getNameInNamespace() + + ", skipping sync"); + } + continue; + } + + String userName = (String) userNameAttr.get(); + + if (userName == null || userName.trim().isEmpty()) { + if (LOG.isInfoEnabled()) { + LOG.info(userNameAttribute + " empty for entry " + userEntry.getNameInNamespace() + + ", skipping sync"); + } + continue; + } + if (userNameCaseConversionFlag) { if (userNameLowerCaseFlag) { userName = userName.toLowerCase() ;
