From cb4eb54b68b0bf54497a572cc81a4e17a72363b7 Mon Sep 17 00:00:00 2001 From: Abhay Kulkarni Date: Tue, 24 Mar 2015 14:39:07 -0700 Subject: [PATCH] First round of Coverity uncovered issues. Signed-off-by: Madhan Neethiraj --- .../hadoop/config/RangerConfiguration.java | 13 +++++---- .../ranger/plugin/util/RangerRESTClient.java | 13 +++++---- .../utils/RangerCredentialProvider.java | 13 +++++---- .../ranger/authorization/hbase/Crypt.java | 13 +++++---- .../agent/HadoopAuthClassTransformer.java | 24 +++++++-------- .../services/hive/client/HiveClient.java | 29 +++++++++++-------- .../main/java/org/apache/util/sql/Jisql.java | 10 +++++++ .../service/filter/RangerRESTAPIFilter.java | 7 ++--- .../config/UserGroupSyncConfig.java | 13 +++++---- 9 files changed, 78 insertions(+), 57 deletions(-) diff --git a/agents-common/src/main/java/org/apache/ranger/authorization/hadoop/config/RangerConfiguration.java b/agents-common/src/main/java/org/apache/ranger/authorization/hadoop/config/RangerConfiguration.java index 7c81d09e..3610e9f2 100644 --- a/agents-common/src/main/java/org/apache/ranger/authorization/hadoop/config/RangerConfiguration.java +++ b/agents-common/src/main/java/org/apache/ranger/authorization/hadoop/config/RangerConfiguration.java @@ -33,7 +33,7 @@ public class RangerConfiguration extends Configuration { private static final Logger LOG = Logger.getLogger(RangerConfiguration.class) ; - private static RangerConfiguration config = null; + private static volatile RangerConfiguration config = null; private RangerConfiguration() { super(false) ; @@ -88,15 +88,16 @@ private void addResourceIfReadable(String aResourceName) { public static RangerConfiguration getInstance() { - if (config == null) { + RangerConfiguration result = config; + if (result == null) { synchronized (RangerConfiguration.class) { - RangerConfiguration temp = config; - if (temp == null) { - config = new RangerConfiguration(); + result = config; + if (result == null) { + config = result = new RangerConfiguration(); } } } - return config; + return result; } public void initAudit(String appType) { diff --git a/agents-common/src/main/java/org/apache/ranger/plugin/util/RangerRESTClient.java b/agents-common/src/main/java/org/apache/ranger/plugin/util/RangerRESTClient.java index f9cc570a..1d57935f 100644 --- a/agents-common/src/main/java/org/apache/ranger/plugin/util/RangerRESTClient.java +++ b/agents-common/src/main/java/org/apache/ranger/plugin/util/RangerRESTClient.java @@ -100,7 +100,7 @@ public class RangerRESTClient { private String mTrustStoreType = null; private Gson gsonBuilder = null; - private Client client = null; + private volatile Client client = null; public RangerRESTClient() { this(RangerConfiguration.getInstance().get(RANGER_PROP_POLICYMGR_URL), @@ -150,15 +150,18 @@ public T fromJson(String json, Class cls) { } public Client getClient() { - if(client == null) { + // result saves on access time when client is built at the time of the call + Client result = client; + if(result == null) { synchronized(this) { - if(client == null) { - client = buildClient(); + result = client; + if(result == null) { + client = result = buildClient(); } } } - return client; + return result; } private Client buildClient() { diff --git a/agents-cred/src/main/java/org/apache/ranger/authorization/hadoop/utils/RangerCredentialProvider.java b/agents-cred/src/main/java/org/apache/ranger/authorization/hadoop/utils/RangerCredentialProvider.java index ebfcc450..48d933b7 100644 --- a/agents-cred/src/main/java/org/apache/ranger/authorization/hadoop/utils/RangerCredentialProvider.java +++ b/agents-cred/src/main/java/org/apache/ranger/authorization/hadoop/utils/RangerCredentialProvider.java @@ -34,19 +34,20 @@ public class RangerCredentialProvider { private static Log LOG = LogFactory.getLog(RangerCredentialProvider.class); - private static RangerCredentialProvider me = null; + private static volatile RangerCredentialProvider me = null; public static RangerCredentialProvider getInstance() { - if ( me == null) { + RangerCredentialProvider result = me; + if ( result == null) { synchronized(RangerCredentialProvider.class) { - RangerCredentialProvider temp = me; - if ( temp == null){ - me = new RangerCredentialProvider(); + result = me; + if ( result == null){ + me = result = new RangerCredentialProvider(); } } } - return me; + return result; } public char[] getCredentialString(String url, String alias) { diff --git a/hbase-agent/src/main/java/org/apache/ranger/authorization/hbase/Crypt.java b/hbase-agent/src/main/java/org/apache/ranger/authorization/hbase/Crypt.java index 272b0a02..1a325337 100644 --- a/hbase-agent/src/main/java/org/apache/ranger/authorization/hbase/Crypt.java +++ b/hbase-agent/src/main/java/org/apache/ranger/authorization/hbase/Crypt.java @@ -36,22 +36,23 @@ public class Crypt { private static final String CIPHER_ALGO = "AES/CBC/PKCS5Padding"; private static final String CIPHER_INIT_ALGO = "AES"; - private static Crypt me = null ; + private static volatile Crypt me = null ; private Cipher encrypter = null; private Cipher descrypter = null; public static Crypt getInstance() { - if (me == null) { + Crypt result = me; + if (result == null) { synchronized (Crypt.class) { - Crypt other = me ; - if (other == null) { - me = new Crypt() ; + result = me ; + if (result == null) { + me = result = new Crypt() ; } } } - return me ; + return result ; } private Crypt() { diff --git a/hdfs-agent/src/main/java/org/apache/ranger/authorization/hadoop/agent/HadoopAuthClassTransformer.java b/hdfs-agent/src/main/java/org/apache/ranger/authorization/hadoop/agent/HadoopAuthClassTransformer.java index 742cf057..2b7a63ea 100644 --- a/hdfs-agent/src/main/java/org/apache/ranger/authorization/hadoop/agent/HadoopAuthClassTransformer.java +++ b/hdfs-agent/src/main/java/org/apache/ranger/authorization/hadoop/agent/HadoopAuthClassTransformer.java @@ -37,23 +37,23 @@ public byte[] transform(ClassLoader aClassLoader, String aClassName, Class aC byte[] ret = aClassFileBuffer; if (aClassName.equals("org/apache/hadoop/hdfs/server/namenode/FSPermissionChecker")) { - if (transformedClassByteCode == null) { + byte[] result = transformedClassByteCode; + if (result == null) { + byte[] injectedClassCode = injectFSPermissionCheckerHooks(aClassLoader, aClassName, aClassBeingRedefined, aProtectionDomain, aClassFileBuffer); if(injectedClassCode != null) { - if(transformedClassByteCode == null) { - synchronized(HadoopAuthClassTransformer.class) { - byte[] temp = transformedClassByteCode; - if (temp == null) { - transformedClassByteCode = injectedClassCode; - } - } - } - } + synchronized (HadoopAuthClassTransformer.class) { + result = transformedClassByteCode; + if (result == null) { + transformedClassByteCode = result = injectedClassCode; + } + } + } } - if(transformedClassByteCode != null) { - ret = transformedClassByteCode; + if(result != null) { + ret = result; } } diff --git a/hive-agent/src/main/java/org/apache/ranger/services/hive/client/HiveClient.java b/hive-agent/src/main/java/org/apache/ranger/services/hive/client/HiveClient.java index 40efe2e6..15ee2fc6 100644 --- a/hive-agent/src/main/java/org/apache/ranger/services/hive/client/HiveClient.java +++ b/hive-agent/src/main/java/org/apache/ranger/services/hive/client/HiveClient.java @@ -189,21 +189,29 @@ public List getTblList(String tableNameMatching, List dbList, Li } finally { close(stat) ; + stat = null; } sql = "show tables " ; if (tableNameMatching != null && ! tableNameMatching.isEmpty()) { sql = sql + " like \"" + tableNameMatching + "\"" ; } - stat = con.createStatement() ; - rs = stat.executeQuery(sql) ; - while (rs.next()) { - String tblName = rs.getString(1); - if ( tblList != null && tblList.contains(tblName)) { - continue; - } - ret.add(tblName); - } + try { + stat = con.createStatement(); + rs = stat.executeQuery(sql); + while (rs.next()) { + String tblName = rs.getString(1); + if (tblList != null && tblList.contains(tblName)) { + continue; + } + ret.add(tblName); + } + } finally { + close(rs); + close(stat); + rs = null; + stat = null; + } } } } catch (SQLTimeoutException sqlt) { @@ -227,9 +235,6 @@ public List getTblList(String tableNameMatching, List dbList, Li LOG.debug("<== HiveClient.getTblList() Error : " + sqle) ; } throw hdpException; - } finally { - close(rs) ; - close(stat) ; } } diff --git a/jisql/src/main/java/org/apache/util/sql/Jisql.java b/jisql/src/main/java/org/apache/util/sql/Jisql.java index e5dac9b3..62da3c10 100644 --- a/jisql/src/main/java/org/apache/util/sql/Jisql.java +++ b/jisql/src/main/java/org/apache/util/sql/Jisql.java @@ -507,6 +507,16 @@ public void doIsql() throws SQLException { // Ignore IOE when closing streams } } + if (statement != null) { + try { + if (!statement.isClosed()) { + statement.close(); + } + + } catch (SQLException sqle) { + // Ignore + } + } } } diff --git a/security-admin/src/main/java/org/apache/ranger/service/filter/RangerRESTAPIFilter.java b/security-admin/src/main/java/org/apache/ranger/service/filter/RangerRESTAPIFilter.java index 6087d35a..21536ac6 100644 --- a/security-admin/src/main/java/org/apache/ranger/service/filter/RangerRESTAPIFilter.java +++ b/security-admin/src/main/java/org/apache/ranger/service/filter/RangerRESTAPIFilter.java @@ -45,26 +45,25 @@ public class RangerRESTAPIFilter extends LoggingFilter { Logger logger = Logger.getLogger(RangerRESTAPIFilter.class); - static boolean initDone = false; + static volatile boolean initDone = false; boolean logStdOut = true; HashMap regexPathMap = new HashMap(); HashMap regexPatternMap = new HashMap(); List regexList = new ArrayList(); List loggedRestPathErrors = new ArrayList(); - private final Object lock = new Object(); void init() { if (initDone) { return; } - synchronized (lock) { + synchronized (RangerRESTAPIFilter.class) { if (initDone) { return; } logStdOut = PropertiesUtil.getBooleanProperty( - "xa.restapi.log.enabled", initDone); + "xa.restapi.log.enabled", false); // Build hash map try { diff --git a/ugsync/src/main/java/org/apache/ranger/unixusersync/config/UserGroupSyncConfig.java b/ugsync/src/main/java/org/apache/ranger/unixusersync/config/UserGroupSyncConfig.java index b2c2eb58..204a39c4 100644 --- a/ugsync/src/main/java/org/apache/ranger/unixusersync/config/UserGroupSyncConfig.java +++ b/ugsync/src/main/java/org/apache/ranger/unixusersync/config/UserGroupSyncConfig.java @@ -146,18 +146,19 @@ public class UserGroupSyncConfig { private Properties prop = new Properties() ; - private static UserGroupSyncConfig me = null ; + private static volatile UserGroupSyncConfig me = null ; public static UserGroupSyncConfig getInstance() { - if (me == null) { + UserGroupSyncConfig result = me; + if (result == null) { synchronized(UserGroupSyncConfig.class) { - UserGroupSyncConfig temp = me ; - if (temp == null) { - me = new UserGroupSyncConfig() ; + result = me ; + if (result == null) { + me = result = new UserGroupSyncConfig() ; } } } - return me ; + return result ; }