[ 
https://issues.apache.org/jira/browse/HADOOP-19338?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

ConfX updated HADOOP-19338:
---------------------------
    Description: 
h3. What Happened: 

A null pointer exception occurs in KeyProviderExtension when trying to close a 
null CryptoCodec object. If supplied with an invalid class name for 
hadoop.security.crypto.codec.classes.aes.ctr.nopadding getClassbyName throws a 
ClassNotFound exception and consequently the CryptoCodec object is not created. 
h3. Buggy Code: 
{code:java}
CryptoCodec cc = CryptoCodec.getInstance(keyProvider.getConf()); // -> this 
does not initialize cc due to a ClassNotFound exception. 
try {
  final byte[] newKey = new byte[encryptionKey.getMaterial().length];
  cc.generateSecureRandom(newKey);
  final byte[] iv = new byte[cc.getCipherSuite().getAlgorithmBlockSize()];
  cc.generateSecureRandom(iv);
  Encryptor encryptor = cc.createEncryptor();
  return generateEncryptedKey(encryptor, encryptionKey, newKey, iv);
} finally {
  cc.close(); // -> this throws a NPE as cc is null
} {code}
h3. Stack Trace: 
{code:java}
java.lang.NullPointerException
        at 
org.apache.hadoop.crypto.key.KeyProviderCryptoExtension$DefaultCryptoExtension.generateEncryptedKey(KeyProviderCryptoExtension.java:303)
        at 
org.apache.hadoop.crypto.key.KeyProviderCryptoExtension.generateEncryptedKey(KeyProviderCryptoExtension.java:513)
        at 
org.apache.hadoop.crypto.key.TestKeyProviderCryptoExtension.testReencryptEncryptedKeys(TestKeyProviderCryptoExtension.java:229)
 {code}
h3. How to Reproduce: 

(1) Set hadoop.security.crypto.codec.classes.aes.ctr.nopadding to 
org.apache.hadoop.crypto.OpensslAesCtrCryptoCodec/

(2) Run test: 
org.apache.hadoop.crypto.key.TestKeyProviderCryptoExtension#testReencryptEncryptedKeys

 

  was:
h3. What Happened: 

A null pointer exception occurs in KeyProviderExtension when trying to close a 
null CryptoCodec object. If supplied with an invalid class name for 
hadoop.security.crypto.codec.classes.aes.ctr.nopadding getClassbyName throws a 
ClassNotFound exception and consequently the CryptoCodec object is not created. 
h3. Buggy Code: 

 
{code:java}
CryptoCodec cc = CryptoCodec.getInstance(keyProvider.getConf()); // -> this 
does not initialize cc due to a ClassNotFound exception. 
try {
  final byte[] newKey = new byte[encryptionKey.getMaterial().length];
  cc.generateSecureRandom(newKey);
  final byte[] iv = new byte[cc.getCipherSuite().getAlgorithmBlockSize()];
  cc.generateSecureRandom(iv);
  Encryptor encryptor = cc.createEncryptor();
  return generateEncryptedKey(encryptor, encryptionKey, newKey, iv);
} finally {
  cc.close(); // -> this throws a NPE as cc is null
} {code}
 

 
h3. Stack Trace: 
{code:java}
java.lang.NullPointerException
        at 
org.apache.hadoop.crypto.key.KeyProviderCryptoExtension$DefaultCryptoExtension.generateEncryptedKey(KeyProviderCryptoExtension.java:303)
        at 
org.apache.hadoop.crypto.key.KeyProviderCryptoExtension.generateEncryptedKey(KeyProviderCryptoExtension.java:513)
        at 
org.apache.hadoop.crypto.key.TestKeyProviderCryptoExtension.testReencryptEncryptedKeys(TestKeyProviderCryptoExtension.java:229)
 {code}
h3. How to Reproduce: 

(1) Set hadoop.security.crypto.codec.classes.aes.ctr.nopadding to 
org.apache.hadoop.crypto.OpensslAesCtrCryptoCodec/

(2) Run test: 
org.apache.hadoop.crypto.key.TestKeyProviderCryptoExtension#testReencryptEncryptedKeys

 


> Null Pointer Exception in KeyProviderCryptoExtension due to Class Not Found 
> Exception
> -------------------------------------------------------------------------------------
>
>                 Key: HADOOP-19338
>                 URL: https://issues.apache.org/jira/browse/HADOOP-19338
>             Project: Hadoop Common
>          Issue Type: Bug
>          Components: common
>    Affects Versions: 3.4.0
>            Reporter: ConfX
>            Assignee: ConfX
>            Priority: Critical
>              Labels: pull-request-available
>
> h3. What Happened: 
> A null pointer exception occurs in KeyProviderExtension when trying to close 
> a null CryptoCodec object. If supplied with an invalid class name for 
> hadoop.security.crypto.codec.classes.aes.ctr.nopadding getClassbyName throws 
> a ClassNotFound exception and consequently the CryptoCodec object is not 
> created. 
> h3. Buggy Code: 
> {code:java}
> CryptoCodec cc = CryptoCodec.getInstance(keyProvider.getConf()); // -> this 
> does not initialize cc due to a ClassNotFound exception. 
> try {
>   final byte[] newKey = new byte[encryptionKey.getMaterial().length];
>   cc.generateSecureRandom(newKey);
>   final byte[] iv = new byte[cc.getCipherSuite().getAlgorithmBlockSize()];
>   cc.generateSecureRandom(iv);
>   Encryptor encryptor = cc.createEncryptor();
>   return generateEncryptedKey(encryptor, encryptionKey, newKey, iv);
> } finally {
>   cc.close(); // -> this throws a NPE as cc is null
> } {code}
> h3. Stack Trace: 
> {code:java}
> java.lang.NullPointerException
>         at 
> org.apache.hadoop.crypto.key.KeyProviderCryptoExtension$DefaultCryptoExtension.generateEncryptedKey(KeyProviderCryptoExtension.java:303)
>         at 
> org.apache.hadoop.crypto.key.KeyProviderCryptoExtension.generateEncryptedKey(KeyProviderCryptoExtension.java:513)
>         at 
> org.apache.hadoop.crypto.key.TestKeyProviderCryptoExtension.testReencryptEncryptedKeys(TestKeyProviderCryptoExtension.java:229)
>  {code}
> h3. How to Reproduce: 
> (1) Set hadoop.security.crypto.codec.classes.aes.ctr.nopadding to 
> org.apache.hadoop.crypto.OpensslAesCtrCryptoCodec/
> (2) Run test: 
> org.apache.hadoop.crypto.key.TestKeyProviderCryptoExtension#testReencryptEncryptedKeys
>  



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to