From c53ca291e21761f1de5417ef596afba395a7f5d1 Mon Sep 17 00:00:00 2001 From: Abhishek Koneru Date: Wed, 6 Jun 2012 16:55:54 -0400 Subject: Fixes for NULL_RETURNS Coverity Issues - Part 2 --- .../netscape/certsrv/authentication/AuthToken.java | 48 ++++++++-------------- .../certsrv/authentication/IAuthToken.java | 18 +++++--- .../com/netscape/cms/authentication/CMCAuth.java | 5 ++- .../cms/policy/extensions/SubjAltNameExt.java | 7 ++-- .../cms/servlet/base/DisplayHtmlServlet.java | 2 - .../servlet/cert/ChallengeRevocationServlet1.java | 4 +- .../com/netscape/cms/servlet/cert/UpdateCRL.java | 1 - .../csadmin/LDAPSecurityDomainSessionTable.java | 14 +++++-- .../cmscore/authentication/AuthSubsystem.java | 4 +- .../authentication/PasswdUserDBAuthentication.java | 6 ++- .../src/com/netscape/cmscore/dbs/DBSubsystem.java | 3 ++ .../com/netscape/cmscore/dbs/KeyRepository.java | 6 +++ .../netscape/cmscore/profile/ProfileSubsystem.java | 3 ++ 13 files changed, 69 insertions(+), 52 deletions(-) (limited to 'base/common/src') diff --git a/base/common/src/com/netscape/certsrv/authentication/AuthToken.java b/base/common/src/com/netscape/certsrv/authentication/AuthToken.java index d934f62e8..1b5bf2350 100644 --- a/base/common/src/com/netscape/certsrv/authentication/AuthToken.java +++ b/base/common/src/com/netscape/certsrv/authentication/AuthToken.java @@ -291,17 +291,13 @@ public class AuthToken implements IAuthToken { return set(name, out.toByteArray()); } - public CertificateExtensions getInCertExts(String name) { + public CertificateExtensions getInCertExts(String name) throws IOException { CertificateExtensions exts = null; byte[] data = getInByteArray(name); if (data != null) { - try { - exts = new CertificateExtensions(); - // exts.decode() doesn't work for empty CertExts - exts.decodeEx(new ByteArrayInputStream(data)); - } catch (IOException e) { - return null; - } + exts = new CertificateExtensions(); + // exts.decode() doesn't work for empty CertExts + exts.decodeEx(new ByteArrayInputStream(data)); } return exts; } @@ -321,7 +317,7 @@ public class AuthToken implements IAuthToken { return set(name, out.toByteArray()); } - public Certificates getInCertificates(String name) { + public Certificates getInCertificates(String name) throws IOException, CertificateException { X509CertImpl[] certArray; byte[] byteValue = getInByteArray(name); @@ -329,18 +325,12 @@ public class AuthToken implements IAuthToken { return null; } - try { - DerInputStream in = new DerInputStream(byteValue); - DerValue[] derValues = in.getSequence(5); - certArray = new X509CertImpl[derValues.length]; - for (int i = 0; i < derValues.length; i++) { - byte[] certData = derValues[i].toByteArray(); - certArray[i] = new X509CertImpl(certData); - } - } catch (IOException e) { - return null; - } catch (CertificateException e) { - return null; + DerInputStream in = new DerInputStream(byteValue); + DerValue[] derValues = in.getSequence(5); + certArray = new X509CertImpl[derValues.length]; + for (int i = 0; i < derValues.length; i++) { + byte[] certData = derValues[i].toByteArray(); + certArray[i] = new X509CertImpl(certData); } return new Certificates(certArray); } @@ -372,22 +362,18 @@ public class AuthToken implements IAuthToken { } } - public byte[][] getInByteArrayArray(String name) { + public byte[][] getInByteArrayArray(String name) throws IOException { byte[][] retval; byte[] byteValue = getInByteArray(name); if (byteValue == null) { return null; } - try { - DerInputStream in = new DerInputStream(byteValue); - DerValue[] derValues = in.getSequence(5); - retval = new byte[derValues.length][]; - for (int i = 0; i < derValues.length; i++) { - retval[i] = derValues[i].getOctetString(); - } - } catch (IOException e) { - return null; + DerInputStream in = new DerInputStream(byteValue); + DerValue[] derValues = in.getSequence(5); + retval = new byte[derValues.length][]; + for (int i = 0; i < derValues.length; i++) { + retval[i] = derValues[i].getOctetString(); } return retval; } diff --git a/base/common/src/com/netscape/certsrv/authentication/IAuthToken.java b/base/common/src/com/netscape/certsrv/authentication/IAuthToken.java index 25a73b8f1..e469f3786 100644 --- a/base/common/src/com/netscape/certsrv/authentication/IAuthToken.java +++ b/base/common/src/com/netscape/certsrv/authentication/IAuthToken.java @@ -17,7 +17,9 @@ // --- END COPYRIGHT BLOCK --- package com.netscape.certsrv.authentication; +import java.io.IOException; import java.math.BigInteger; +import java.security.cert.CertificateException; import java.util.Date; import java.util.Enumeration; @@ -176,9 +178,10 @@ public interface IAuthToken { * Retrieves the CertificateExtensions value for name. * * @param name The attribute name. - * @return The value or null on error. + * @return The value. + * @throws IOException */ - public CertificateExtensions getInCertExts(String name); + public CertificateExtensions getInCertExts(String name) throws IOException; /** * Stores the CertificateExtensions with the associated key. @@ -193,9 +196,11 @@ public interface IAuthToken { * Retrieves the Certificates value for name. * * @param name The attribute name. - * @return The value or null on error. + * @return The value. + * @throws IOException + * @throws CertificateException */ - public Certificates getInCertificates(String name); + public Certificates getInCertificates(String name) throws IOException, CertificateException; /** * Stores the Certificates with the associated key. @@ -210,9 +215,10 @@ public interface IAuthToken { * Retrieves the byte[][] value for name. * * @param name The attribute name. - * @return The value or null on error. + * @return The value. + * @throws IOException */ - public byte[][] getInByteArrayArray(String name); + public byte[][] getInByteArrayArray(String name) throws IOException; /** * Stores the byte[][] with the associated key. diff --git a/base/common/src/com/netscape/cms/authentication/CMCAuth.java b/base/common/src/com/netscape/cms/authentication/CMCAuth.java index d15f445f3..2844601f4 100644 --- a/base/common/src/com/netscape/cms/authentication/CMCAuth.java +++ b/base/common/src/com/netscape/cms/authentication/CMCAuth.java @@ -768,7 +768,7 @@ public class CMCAuth implements IAuthManager, IExtendedPluginInfo, level, "CMC Authentication: " + msg); } - protected IAuthToken verifySignerInfo(AuthToken authToken, SignedData cmcFullReq) throws EInvalidCredentials { + protected IAuthToken verifySignerInfo(AuthToken authToken, SignedData cmcFullReq) throws EBaseException { EncapsulatedContentInfo ci = cmcFullReq.getContentInfo(); OBJECT_IDENTIFIER id = ci.getContentType(); @@ -875,6 +875,9 @@ public class CMCAuth implements IAuthManager, IExtendedPluginInfo, IAuthSubsystem authSS = (IAuthSubsystem) CMS.getSubsystem(CMS.SUBSYSTEM_AUTH); IAuthManager agentAuth = authSS.getAuthManager(IAuthSubsystem.CERTUSERDB_AUTHMGR_ID);//AGENT_AUTHMGR_ID); + if (agentAuth == null) { + throw new EBaseException(CMS.getUserMessage("CMS_AUTHENTICATION_MANAGER_NOT_FOUND", IAuthSubsystem.CERTUSERDB_AUTHMGR_ID)); + } IAuthCredentials agentCred = new com.netscape.certsrv.authentication.AuthCredentials(); agentCred.set(IAuthManager.CRED_SSL_CLIENT_CERT, x509Certs); diff --git a/base/common/src/com/netscape/cms/policy/extensions/SubjAltNameExt.java b/base/common/src/com/netscape/cms/policy/extensions/SubjAltNameExt.java index e1ae7d074..d6e626aa9 100644 --- a/base/common/src/com/netscape/cms/policy/extensions/SubjAltNameExt.java +++ b/base/common/src/com/netscape/cms/policy/extensions/SubjAltNameExt.java @@ -250,9 +250,9 @@ public class SubjAltNameExt extends APolicyRule /** * Generate a String Vector containing all the email addresses * found in this Authentication token + * @throws IOException */ - protected Vector /* of String */ - getEmailList(IAuthToken tok) { + protected Vector getEmailList(IAuthToken tok) throws IOException { Vector v = new Vector(); @@ -267,9 +267,10 @@ public class SubjAltNameExt extends APolicyRule /** * Add attribute values from an LDAP attribute to a vector + * @throws IOException */ protected void - addValues(IAuthToken tok, String attrName, Vector v) { + addValues(IAuthToken tok, String attrName, Vector v) throws IOException { String attr[] = tok.getInStringArray(attrName); if (attr == null) diff --git a/base/common/src/com/netscape/cms/servlet/base/DisplayHtmlServlet.java b/base/common/src/com/netscape/cms/servlet/base/DisplayHtmlServlet.java index a6cb97908..895e099fb 100644 --- a/base/common/src/com/netscape/cms/servlet/base/DisplayHtmlServlet.java +++ b/base/common/src/com/netscape/cms/servlet/base/DisplayHtmlServlet.java @@ -61,9 +61,7 @@ public class DisplayHtmlServlet extends CMSServlet { */ public void process(CMSRequest cmsReq) throws EBaseException { CMS.debug("DisplayHtmlServlet about to service "); - authenticate(cmsReq); - try { String realpath = mServletConfig.getServletContext().getRealPath("/" + mHTMLPath); diff --git a/base/common/src/com/netscape/cms/servlet/cert/ChallengeRevocationServlet1.java b/base/common/src/com/netscape/cms/servlet/cert/ChallengeRevocationServlet1.java index e820bb87a..0b59fdc97 100644 --- a/base/common/src/com/netscape/cms/servlet/cert/ChallengeRevocationServlet1.java +++ b/base/common/src/com/netscape/cms/servlet/cert/ChallengeRevocationServlet1.java @@ -132,9 +132,9 @@ public class ChallengeRevocationServlet1 extends CMSServlet { * * * @param cmsReq the object holding the request and response information + * @throws EBaseException */ - protected void process(CMSRequest cmsReq) - throws EBaseException { + protected void process(CMSRequest cmsReq) throws EBaseException { IArgBlock httpParams = cmsReq.getHttpParams(); HttpServletRequest req = cmsReq.getHttpReq(); HttpServletResponse resp = cmsReq.getHttpResp(); diff --git a/base/common/src/com/netscape/cms/servlet/cert/UpdateCRL.java b/base/common/src/com/netscape/cms/servlet/cert/UpdateCRL.java index bd12bcfd8..a3cec570a 100644 --- a/base/common/src/com/netscape/cms/servlet/cert/UpdateCRL.java +++ b/base/common/src/com/netscape/cms/servlet/cert/UpdateCRL.java @@ -122,7 +122,6 @@ public class UpdateCRL extends CMSServlet { IAuthToken authToken = authenticate(cmsReq); AuthzToken authzToken = null; - try { authzToken = authorize(mAclMethod, authToken, mAuthzResourceName, "update"); diff --git a/base/common/src/com/netscape/cms/servlet/csadmin/LDAPSecurityDomainSessionTable.java b/base/common/src/com/netscape/cms/servlet/csadmin/LDAPSecurityDomainSessionTable.java index b9932722e..ff9ab5eba 100644 --- a/base/common/src/com/netscape/cms/servlet/csadmin/LDAPSecurityDomainSessionTable.java +++ b/base/common/src/com/netscape/cms/servlet/csadmin/LDAPSecurityDomainSessionTable.java @@ -192,7 +192,11 @@ public class LDAPSecurityDomainSessionTable LDAPSearchResults res = conn.search(sessionsdn, LDAPv2.SCOPE_SUB, filter, attrs, false); while (res.hasMoreElements()) { LDAPEntry entry = res.next(); - ret.add(entry.getAttribute("cn").getStringValueArray()[0]); + LDAPAttribute sid = entry.getAttribute("cn"); + if (sid == null) { + throw new Exception("Invalid LDAP Entry." + entry.getDN() + " No session id(cn)."); + } + ret.add(sid.getStringValueArray()[0]); } } catch (LDAPException e) { switch (e.getLDAPResultCode()) { @@ -228,10 +232,14 @@ public class LDAPSecurityDomainSessionTable LDAPSearchResults res = conn.search(sessionsdn, LDAPv2.SCOPE_SUB, filter, attrs, false); if (res.getCount() > 0) { LDAPEntry entry = res.next(); - ret = entry.getAttribute(attr).getStringValueArray()[0]; + LDAPAttribute searchAttribute = entry.getAttribute(attr); + if (searchAttribute == null) { + throw new Exception("No Attribute " + attr + " for this session in LDAPEntry "+entry.getDN()); + } + ret = searchAttribute.getStringValueArray()[0]; } } catch (Exception e) { - CMS.debug("SecurityDomainSessionTable: unable to query session " + sessionId + ": " + e); + CMS.debug("SecurityDomainSessionTable: unable to query session " + sessionId + ": " + e.getMessage()); } try { diff --git a/base/common/src/com/netscape/cmscore/authentication/AuthSubsystem.java b/base/common/src/com/netscape/cmscore/authentication/AuthSubsystem.java index fbb589376..c5b09a7d7 100644 --- a/base/common/src/com/netscape/cmscore/authentication/AuthSubsystem.java +++ b/base/common/src/com/netscape/cmscore/authentication/AuthSubsystem.java @@ -458,9 +458,9 @@ public class AuthSubsystem implements IAuthSubsystem { *

*/ public void shutdown() { - for (Enumeration e = mAuthMgrInsts.keys(); e.hasMoreElements();) { + for (AuthManagerProxy proxy : mAuthMgrInsts.values()) { - IAuthManager mgr = get(e.nextElement()); + IAuthManager mgr = proxy.getAuthManager(); log(ILogger.LL_INFO, CMS.getLogMessage("CMSCORE_AUTH_INSTANCE_SHUTDOWN", mgr.getName())); diff --git a/base/common/src/com/netscape/cmscore/authentication/PasswdUserDBAuthentication.java b/base/common/src/com/netscape/cmscore/authentication/PasswdUserDBAuthentication.java index 5b6418c00..fa8696c1d 100644 --- a/base/common/src/com/netscape/cmscore/authentication/PasswdUserDBAuthentication.java +++ b/base/common/src/com/netscape/cmscore/authentication/PasswdUserDBAuthentication.java @@ -191,7 +191,11 @@ public class PasswdUserDBAuthentication implements IAuthManager { e.printStackTrace(); // not a user in our user/group database. log(ILogger.LL_SECURITY, CMS.getLogMessage("CMSCORE_AUTH_UID_NOT_FOUND", uid, e.toString())); - throw new EInvalidCredentials(CMS.getUserMessage("CMS_AUTHENTICATION_INVALID_CREDENTIAL")); + throw new EInvalidCredentials(CMS.getUserMessage("CMS_AUTHENTICATION_INVALID_CREDENTIAL") + " " + e.getMessage()); + } + if (user == null) { + throw new EInvalidCredentials(CMS.getUserMessage("CMS_AUTHENTICATION_INTERNAL_ERROR", + "Failure in User Group subsystem.")); } authToken.set(TOKEN_USERDN, user.getUserDN()); authToken.set(TOKEN_USERID, user.getUserID()); diff --git a/base/common/src/com/netscape/cmscore/dbs/DBSubsystem.java b/base/common/src/com/netscape/cmscore/dbs/DBSubsystem.java index 304f5aa94..c0bb627c2 100644 --- a/base/common/src/com/netscape/cmscore/dbs/DBSubsystem.java +++ b/base/common/src/com/netscape/cmscore/dbs/DBSubsystem.java @@ -408,6 +408,9 @@ public class DBSubsystem implements IDBSubsystem { LDAPEntry entry = conn.read(dn); LDAPAttribute attr = entry.getAttribute(PROP_NEXT_RANGE); + if (attr == null) { + throw new Exception("Missing Attribute" + PROP_NEXT_RANGE + "in Entry " + dn); + } nextRange = (String) attr.getStringValues().nextElement(); BigInteger nextRangeNo = new BigInteger(nextRange); diff --git a/base/common/src/com/netscape/cmscore/dbs/KeyRepository.java b/base/common/src/com/netscape/cmscore/dbs/KeyRepository.java index 726746627..0fbff688a 100644 --- a/base/common/src/com/netscape/cmscore/dbs/KeyRepository.java +++ b/base/common/src/com/netscape/cmscore/dbs/KeyRepository.java @@ -251,6 +251,9 @@ public class KeyRepository extends Repository implements IKeyRepository { */ public IKeyRecord readKeyRecord(BigInteger serialNo) throws EBaseException { + if (serialNo == null) { + throw new EBaseException("Invalid Serial Number."); + } IDBSSession s = mDBService.createSession(); KeyRecord rec = null; @@ -264,6 +267,9 @@ public class KeyRepository extends Repository implements IKeyRepository { if (s != null) s.close(); } + if (rec == null) { + throw new EBaseException("Failed to recover Key for Serial Number " + serialNo); + } return rec; } diff --git a/base/common/src/com/netscape/cmscore/profile/ProfileSubsystem.java b/base/common/src/com/netscape/cmscore/profile/ProfileSubsystem.java index 53d4fa14a..7da1cc332 100644 --- a/base/common/src/com/netscape/cmscore/profile/ProfileSubsystem.java +++ b/base/common/src/com/netscape/cmscore/profile/ProfileSubsystem.java @@ -96,6 +96,9 @@ public class ProfileSubsystem implements IProfileSubsystem { IConfigStore subStore = config.getSubStore(id); String classid = subStore.getString(PROP_CLASS_ID); IPluginInfo info = registry.getPluginInfo("profile", classid); + if (info == null) { + throw new EBaseException("No plugins for type : profile with id " + classid); + } String configPath = subStore.getString(PROP_CONFIG); CMS.debug("Start Profile Creation - " + id + " " + classid + " " + info.getClassName()); -- cgit