Smack:4.5.0-beta9: aTalk crashes on launch due to getProtectionDomain() always return null

aTalk is upgrading to use smack-4.5.0-beta9; but crashes on startup:

The logcat shows:

                 Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'java.security.CodeSource java.security.ProtectionDomain.getCodeSource()' on a null object reference
                 	at org.jivesoftware.smackx.formtypes.FormFieldRegistry.loadFormFieldRegistryEntries(FormFieldRegistry.java:109)
                 	at org.jivesoftware.smackx.formtypes.FormFieldRegistry.<clinit>(FormFieldRegistry.java:56)
                 	at org.jivesoftware.smackx.softwareinfo.form.SoftwareInfoForm.<clinit>(SoftwareInfoForm.java:52) 
                 	at java.lang.Class.classForName(Native Method) 
                 	at java.lang.Class.forName(Class.java:536) 
                 	at org.jivesoftware.smack.SmackInitialization.loadSmackClass(SmackInitialization.java:210) 
                 	at org.jivesoftware.smack.SmackInitialization.parseClassesToLoad(SmackInitialization.java:190) 
                 	at org.jivesoftware.smack.SmackInitialization.processConfigFile(SmackInitialization.java:164) 
                 	at org.jivesoftware.smack.initializer.UrlInitializer.initialize(UrlInitializer.java:69) 
                 	at org.jivesoftware.smack.SmackInitialization.loadSmackClass(SmackInitialization.java:229) 
                 	at org.jivesoftware.smack.SmackInitialization.parseClassesToLoad(SmackInitialization.java:190) 
                 	at org.jivesoftware.smack.SmackInitialization.processConfigFile(SmackInitialization.java:167) 
                 	at org.jivesoftware.smack.SmackInitialization.processConfigFile(SmackInitialization.java:154) 
                 	at org.jivesoftware.smack.SmackInitialization.<clinit>(SmackInitialization.java:103) 
                 	at org.jivesoftware.smack.Smack.getVersion(Smack.java:51) 
                 	at net.java.sip.communicator.impl.protocol.jabber.ProtocolProviderServiceJabberImpl.loadJabberServiceClasses(ProtocolProviderServiceJabberImpl.java:3144) 
                 	at net.java.sip.communicator.impl.protocol.jabber.ProtocolProviderServiceJabberImpl.<clinit>(ProtocolProviderServiceJabberImpl.java:643) 
                 	at net.java.sip.communicator.impl.protocol.jabber.ProtocolProviderFactoryJabberImpl.createService(ProtocolProviderFactoryJabberImpl.java:117) 
                 	at net.java.sip.communicator.service.protocol.ProtocolProviderFactory.loadAccount(ProtocolProviderFactory.java:945) 
                 	at net.java.sip.communicator.service.protocol.AccountManager.doLoadStoredAccounts(AccountManager.java:145) 
                 	at net.java.sip.communicator.service.protocol.AccountManager.loadStoredAccounts(AccountManager.java:297) 
                 	at net.java.sip.communicator.service.protocol.AccountManager.runInLoadStoredAccountsThread(AccountManager.java:391) 
                 	at net.java.sip.communicator.service.protocol.AccountManager.-$$Nest$mrunInLoadStoredAccountsThread(Unknown Source:0) 
                 	at net.java.sip.communicator.service.protocol.AccountManager$1.run(AccountManager.java:328) 

On checking it was found that the newly added static call is the root cause.

loadFormFieldRegistryEntries();
->
XDataManager.class.getProtectionDomain() always return null.

android-sdk always return null i.e.
    public java.security.ProtectionDomain getProtectionDomain() {
        // Android-changed: Removed SecurityManager check.
        return null;
    }
1 Like