From d5d0b91bc5597eec19520cee74569e9ddacc2090 Mon Sep 17 00:00:00 2001 From: Abhishek Koneru Date: Fri, 15 Jun 2012 10:28:40 -0400 Subject: Fixes for Coverity Issues of type Null Returns - Part 3 --- .../com/netscape/cmscore/usrgrp/UGSubsystem.java | 40 ++++++++++++++++------ 1 file changed, 30 insertions(+), 10 deletions(-) (limited to 'base/common/src/com/netscape/cmscore/usrgrp') diff --git a/base/common/src/com/netscape/cmscore/usrgrp/UGSubsystem.java b/base/common/src/com/netscape/cmscore/usrgrp/UGSubsystem.java index 95e213541..20ad26524 100644 --- a/base/common/src/com/netscape/cmscore/usrgrp/UGSubsystem.java +++ b/base/common/src/com/netscape/cmscore/usrgrp/UGSubsystem.java @@ -416,8 +416,11 @@ public final class UGSubsystem implements IUGSubsystem { * @return the User entity. */ protected IUser lbuildUser(LDAPEntry entry) throws EUsrGrpException { - IUser id = createUser(this, (String) - entry.getAttribute("uid").getStringValues().nextElement()); + LDAPAttribute uid = entry.getAttribute("uid"); + if (uid == null) { + throw new EUsrGrpException("No Attribute UID in LDAP Entry " + entry.getDN()); + } + IUser id = createUser(this, (String) uid.getStringValues().nextElement()); LDAPAttribute cnAttr = entry.getAttribute("cn"); if (cnAttr != null) { @@ -472,8 +475,11 @@ public final class UGSubsystem implements IUGSubsystem { * @return the User entity. */ protected IUser buildUser(LDAPEntry entry) throws EUsrGrpException { - IUser id = createUser(this, (String) - entry.getAttribute("uid").getStringValues().nextElement()); + LDAPAttribute uid = entry.getAttribute("uid"); + if (uid == null) { + throw new EUsrGrpException("No Attribute UID in LDAP Entry " + entry.getDN()); + } + IUser id = createUser(this, (String) uid.getStringValues().nextElement()); LDAPAttribute cnAttr = entry.getAttribute("cn"); if (cnAttr != null) { @@ -1119,7 +1125,7 @@ public final class UGSubsystem implements IUGSubsystem { } } - protected Enumeration buildGroups(LDAPSearchResults res) { + protected Enumeration buildGroups(LDAPSearchResults res) throws EUsrGrpException { Vector v = new Vector(); while (res.hasMoreElements()) { @@ -1132,8 +1138,9 @@ public final class UGSubsystem implements IUGSubsystem { /** * Finds groups. + * @throws EUsrGrpException */ - public Enumeration findGroups(String filter) { + public Enumeration findGroups(String filter) throws EUsrGrpException { if (filter == null) { return null; } @@ -1160,7 +1167,7 @@ public final class UGSubsystem implements IUGSubsystem { } } - public IGroup findGroup(String filter) { + public IGroup findGroup(String filter) throws EUsrGrpException { Enumeration groups = findGroups(filter); if (groups == null || !groups.hasMoreElements()) @@ -1205,9 +1212,14 @@ public final class UGSubsystem implements IUGSubsystem { /** * builds an instance of a Group entry + * @throws EUsrGrpException */ - protected IGroup buildGroup(LDAPEntry entry) { - String groupName = (String) entry.getAttribute("cn").getStringValues().nextElement(); + protected IGroup buildGroup(LDAPEntry entry) throws EUsrGrpException { + LDAPAttribute cn = entry.getAttribute("cn"); + if (cn == null) { + throw new EUsrGrpException("Cannot build group. No Attribute cn in LDAP Entry " + entry.getDN()); + } + String groupName = (String) cn.getStringValues().nextElement(); IGroup grp = createGroup(this, groupName); LDAPAttribute grpDesc = entry.getAttribute("description"); @@ -1357,7 +1369,9 @@ public final class UGSubsystem implements IUGSubsystem { public boolean isMemberOf(String userid, String groupname) { try { IUser user = getUser(userid); - return isMemberOfLdapGroup(user.getUserDN(), groupname); + if (user != null) { + return isMemberOfLdapGroup(user.getUserDN(), groupname); + } } catch (Exception e) { /* do nothing */ } @@ -1630,6 +1644,12 @@ public final class UGSubsystem implements IUGSubsystem { protected boolean isMatched(String dn1, String dn2) { String rdn1[] = LDAPDN.explodeDN(dn1, false); String rdn2[] = LDAPDN.explodeDN(dn2, false); + if (rdn1 == null && rdn2 == null) { + return true; + } + if (rdn1 == null || rdn2 == null) { + return false; + } if (rdn1.length == rdn2.length) { for (int j = 0; j < rdn1.length; j++) { -- cgit