Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fixes from Infer scan over JNI/JSSE classes #182

Merged
merged 9 commits into from
Apr 5, 2024
16 changes: 10 additions & 6 deletions scripts/infer.sh
Original file line number Diff line number Diff line change
Expand Up @@ -17,10 +17,12 @@
#

infer run -- javac \
src/java/com/wolfssl/WolfSSLCertificate.java \
src/java/com/wolfssl/WolfSSL.java \
src/java/com/wolfssl/WolfSSLALPNSelectCallback.java \
src/java/com/wolfssl/WolfSSLCertManager.java \
src/java/com/wolfssl/WolfSSLCertRequest.java \
src/java/com/wolfssl/WolfSSLCertificate.java \
src/java/com/wolfssl/WolfSSLContext.java \
src/java/com/wolfssl/WolfSSLCustomUser.java \
src/java/com/wolfssl/WolfSSLDecryptVerifyCallback.java \
src/java/com/wolfssl/WolfSSLEccSharedSecretCallback.java \
src/java/com/wolfssl/WolfSSLEccSignCallback.java \
Expand All @@ -30,7 +32,6 @@ infer run -- javac \
src/java/com/wolfssl/WolfSSLGenCookieCallback.java \
src/java/com/wolfssl/WolfSSLIORecvCallback.java \
src/java/com/wolfssl/WolfSSLIOSendCallback.java \
src/java/com/wolfssl/WolfSSL.java \
src/java/com/wolfssl/WolfSSLJNIException.java \
src/java/com/wolfssl/WolfSSLLoggingCallback.java \
src/java/com/wolfssl/WolfSSLMacEncryptCallback.java \
Expand All @@ -44,15 +45,17 @@ infer run -- javac \
src/java/com/wolfssl/WolfSSLSession.java \
src/java/com/wolfssl/WolfSSLTls13SecretCallback.java \
src/java/com/wolfssl/WolfSSLVerifyCallback.java \
src/java/com/wolfssl/WolfSSLX509Name.java \
src/java/com/wolfssl/WolfSSLX509StoreCtx.java \
src/java/com/wolfssl/wolfcrypt/ECC.java \
src/java/com/wolfssl/wolfcrypt/EccKey.java \
src/java/com/wolfssl/wolfcrypt/RSA.java \
src/java/com/wolfssl/provider/jsse/WolfSSLAuthStore.java \
src/java/com/wolfssl/provider/jsse/WolfSSLContext.java \
src/java/com/wolfssl/provider/jsse/WolfSSLCustomUser.java \
src/java/com/wolfssl/provider/jsse/WolfSSLDebug.java \
src/java/com/wolfssl/provider/jsse/WolfSSLEngineHelper.java \
src/java/com/wolfssl/provider/jsse/WolfSSLEngine.java \
src/java/com/wolfssl/provider/jsse/WolfSSLEngineHelper.java \
src/java/com/wolfssl/provider/jsse/WolfSSLGenericHostName.java \
src/java/com/wolfssl/provider/jsse/WolfSSLImplementSSLSession.java \
src/java/com/wolfssl/provider/jsse/WolfSSLInternalVerifyCb.java \
Expand All @@ -62,14 +65,15 @@ infer run -- javac \
src/java/com/wolfssl/provider/jsse/WolfSSLParametersHelper.java \
src/java/com/wolfssl/provider/jsse/WolfSSLParameters.java \
src/java/com/wolfssl/provider/jsse/WolfSSLProvider.java \
src/java/com/wolfssl/provider/jsse/WolfSSLServerSocketFactory.java \
src/java/com/wolfssl/provider/jsse/WolfSSLSNIServerName.java \
src/java/com/wolfssl/provider/jsse/WolfSSLServerSocket.java \
src/java/com/wolfssl/provider/jsse/WolfSSLServerSocketFactory.java \
src/java/com/wolfssl/provider/jsse/WolfSSLSessionContext.java \
src/java/com/wolfssl/provider/jsse/WolfSSLSNIServerName.java \
src/java/com/wolfssl/provider/jsse/WolfSSLSocketFactory.java \
src/java/com/wolfssl/provider/jsse/WolfSSLSocket.java \
src/java/com/wolfssl/provider/jsse/WolfSSLTrustManager.java \
src/java/com/wolfssl/provider/jsse/WolfSSLTrustX509.java \
src/java/com/wolfssl/provider/jsse/WolfSSLUtil.java \
src/java/com/wolfssl/provider/jsse/WolfSSLX509.java \
src/java/com/wolfssl/provider/jsse/WolfSSLX509X.java \
src/java/com/wolfssl/provider/jsse/adapter/WolfSSLJDK8Helper.java
Expand Down
24 changes: 13 additions & 11 deletions src/java/com/wolfssl/WolfSSLCertificate.java
Original file line number Diff line number Diff line change
Expand Up @@ -323,7 +323,9 @@ protected long getX509Ptr() throws IllegalStateException {

confirmObjectIsActive();

return this.x509Ptr;
synchronized (x509Lock) {
return this.x509Ptr;
}
}

/**
Expand Down Expand Up @@ -1435,14 +1437,14 @@ public Collection<List<?>> getSubjectAltNames()

confirmObjectIsActive();

if (this.altNames != null) {
/* already gathered, return cached version */
return this.altNames;
}
synchronized (x509Lock) {
if (this.altNames != null) {
/* already gathered, return cached version */
return this.altNames;
}

Collection<List<?>> names = new ArrayList<List<?>>();
Collection<List<?>> names = new ArrayList<List<?>>();

synchronized (x509Lock) {
String nextAltName = X509_get_next_altname(this.x509Ptr);
while (nextAltName != null) {
Object[] entry = new Object[2];
Expand All @@ -1453,12 +1455,12 @@ public Collection<List<?>> getSubjectAltNames()
names.add(Collections.unmodifiableList(entryList));
nextAltName = X509_get_next_altname(this.x509Ptr);
}
}

/* cache altNames collection for later use */
this.altNames = Collections.unmodifiableCollection(names);
/* cache altNames collection for later use */
this.altNames = Collections.unmodifiableCollection(names);

return this.altNames;
return this.altNames;
}
}

/**
Expand Down
46 changes: 25 additions & 21 deletions src/java/com/wolfssl/WolfSSLContext.java
Original file line number Diff line number Diff line change
Expand Up @@ -104,32 +104,34 @@ public WolfSSLContext(long method) throws WolfSSLException {
*
* @return pointer to native WOLFSSL_CTX structure for this object
*/
protected synchronized long getContextPtr() {
return sslCtxPtr;
protected long getContextPtr() {
synchronized (this.ctxLock) {
return sslCtxPtr;
}
}

/* used by JNI native recv Cb */
WolfSSLIORecvCallback getInternRecvCb() {
synchronized WolfSSLIORecvCallback getInternRecvCb() {
return internRecvCb;
}

/* used by JNI native send Cb */
WolfSSLIOSendCallback getInternSendCb() {
synchronized WolfSSLIOSendCallback getInternSendCb() {
return internSendCb;
}

/* used by JNI native cookie Cb */
WolfSSLGenCookieCallback getInternCookieCb() {
synchronized WolfSSLGenCookieCallback getInternCookieCb() {
return internCookieCb;
}

/* used by JNI native MAC/encrypt Cb */
WolfSSLMacEncryptCallback getInternMacEncryptCb() {
synchronized WolfSSLMacEncryptCallback getInternMacEncryptCb() {
return internMacEncryptCb;
}

/* used by JNI native decrypt/verify Cb */
WolfSSLDecryptVerifyCallback getInternDecryptVerifyCb() {
synchronized WolfSSLDecryptVerifyCallback getInternDecryptVerifyCb() {
return internDecryptVerifyCb;
}

Expand Down Expand Up @@ -1127,7 +1129,7 @@ public int setGroupMessages() throws IllegalStateException {
* @throws WolfSSLJNIException Internal JNI error
* @see #setIOSend(WolfSSLIOSendCallback)
*/
public void setIORecv(WolfSSLIORecvCallback callback)
public synchronized void setIORecv(WolfSSLIORecvCallback callback)
throws IllegalStateException, WolfSSLJNIException {

confirmObjectIsActive();
Expand Down Expand Up @@ -1161,7 +1163,7 @@ public void setIORecv(WolfSSLIORecvCallback callback)
* @throws WolfSSLJNIException Internal JNI error
* @see #setIORecv(WolfSSLIORecvCallback)
*/
public void setIOSend(WolfSSLIOSendCallback callback)
public synchronized void setIOSend(WolfSSLIOSendCallback callback)
throws IllegalStateException, WolfSSLJNIException {

confirmObjectIsActive();
Expand Down Expand Up @@ -1195,7 +1197,7 @@ public void setIOSend(WolfSSLIOSendCallback callback)
* @throws IllegalStateException WolfSSLContext has been freed
* @throws WolfSSLJNIException Internal JNI error
*/
public void setGenCookie(WolfSSLGenCookieCallback callback)
public synchronized void setGenCookie(WolfSSLGenCookieCallback callback)
throws IllegalStateException, WolfSSLJNIException {

confirmObjectIsActive();
Expand Down Expand Up @@ -1444,7 +1446,7 @@ public int setOCSPOverrideUrl(String url)
* @throws WolfSSLJNIException Internal JNI error
* @see #setDecryptVerifyCb(WolfSSLDecryptVerifyCallback)
*/
public void setMacEncryptCb(WolfSSLMacEncryptCallback callback)
public synchronized void setMacEncryptCb(WolfSSLMacEncryptCallback callback)
throws IllegalStateException, WolfSSLJNIException {

confirmObjectIsActive();
Expand Down Expand Up @@ -1483,7 +1485,8 @@ public void setMacEncryptCb(WolfSSLMacEncryptCallback callback)
* @throws WolfSSLJNIException Internal JNI error
* @see #setMacEncryptCb(WolfSSLMacEncryptCallback)
*/
public void setDecryptVerifyCb(WolfSSLDecryptVerifyCallback callback)
public synchronized void setDecryptVerifyCb(
WolfSSLDecryptVerifyCallback callback)
throws IllegalStateException, WolfSSLJNIException {

confirmObjectIsActive();
Expand Down Expand Up @@ -1519,7 +1522,7 @@ public void setDecryptVerifyCb(WolfSSLDecryptVerifyCallback callback)
* @throws WolfSSLJNIException Internal JNI error
* @see WolfSSLSession#setEccSignCtx(Object)
*/
public void setEccSignCb(WolfSSLEccSignCallback callback)
public synchronized void setEccSignCb(WolfSSLEccSignCallback callback)
throws IllegalStateException, WolfSSLJNIException {

confirmObjectIsActive();
Expand Down Expand Up @@ -1555,7 +1558,7 @@ public void setEccSignCb(WolfSSLEccSignCallback callback)
* @throws WolfSSLJNIException Internal JNI error
* @see WolfSSLSession#setEccVerifyCtx(Object)
*/
public void setEccVerifyCb(WolfSSLEccVerifyCallback callback)
public synchronized void setEccVerifyCb(WolfSSLEccVerifyCallback callback)
throws IllegalStateException, WolfSSLJNIException {

confirmObjectIsActive();
Expand Down Expand Up @@ -1606,7 +1609,8 @@ public void setEccVerifyCb(WolfSSLEccVerifyCallback callback)
* @see WolfSSLSession#setEccSignCtx(Object)
* @see WolfSSLSession#setEccVerifyCtx(Object)
*/
public void setEccSharedSecretCb(WolfSSLEccSharedSecretCallback callback)
public synchronized void setEccSharedSecretCb(
WolfSSLEccSharedSecretCallback callback)
throws IllegalStateException, WolfSSLJNIException {

confirmObjectIsActive();
Expand Down Expand Up @@ -1642,7 +1646,7 @@ public void setEccSharedSecretCb(WolfSSLEccSharedSecretCallback callback)
* @throws WolfSSLJNIException Internal JNI error
* @see WolfSSLSession#setRsaSignCtx(Object)
*/
public void setRsaSignCb(WolfSSLRsaSignCallback callback)
public synchronized void setRsaSignCb(WolfSSLRsaSignCallback callback)
throws IllegalStateException, WolfSSLJNIException {

confirmObjectIsActive();
Expand Down Expand Up @@ -1678,7 +1682,7 @@ public void setRsaSignCb(WolfSSLRsaSignCallback callback)
* @throws WolfSSLJNIException Internal JNI error
* @see WolfSSLSession#setRsaVerifyCtx(Object)
*/
public void setRsaVerifyCb(WolfSSLRsaVerifyCallback callback)
public synchronized void setRsaVerifyCb(WolfSSLRsaVerifyCallback callback)
throws IllegalStateException, WolfSSLJNIException {

confirmObjectIsActive();
Expand Down Expand Up @@ -1714,7 +1718,7 @@ public void setRsaVerifyCb(WolfSSLRsaVerifyCallback callback)
* @throws WolfSSLJNIException Internal JNI exception
* @see WolfSSLSession#setRsaEncCtx(Object)
*/
public void setRsaEncCb(WolfSSLRsaEncCallback callback)
public synchronized void setRsaEncCb(WolfSSLRsaEncCallback callback)
throws IllegalStateException, WolfSSLJNIException {

confirmObjectIsActive();
Expand Down Expand Up @@ -1749,7 +1753,7 @@ public void setRsaEncCb(WolfSSLRsaEncCallback callback)
* @throws WolfSSLJNIException Internal JNI error
* @see WolfSSLSession#setRsaDecCtx(Object)
*/
public void setRsaDecCb(WolfSSLRsaDecCallback callback)
public synchronized void setRsaDecCb(WolfSSLRsaDecCallback callback)
throws IllegalStateException, WolfSSLJNIException {

confirmObjectIsActive();
Expand Down Expand Up @@ -1788,7 +1792,7 @@ public void setRsaDecCb(WolfSSLRsaDecCallback callback)
* @see WolfSSLSession#getPskIdentityHint()
* @see WolfSSLSession#usePskIdentityHint(String)
*/
public void setPskClientCb(WolfSSLPskClientCallback callback)
public synchronized void setPskClientCb(WolfSSLPskClientCallback callback)
throws IllegalStateException, WolfSSLJNIException {

confirmObjectIsActive();
Expand Down Expand Up @@ -1826,7 +1830,7 @@ public void setPskClientCb(WolfSSLPskClientCallback callback)
* @see WolfSSLSession#getPskIdentityHint()
* @see WolfSSLSession#usePskIdentityHint(String)
*/
public void setPskServerCb(WolfSSLPskServerCallback callback)
public synchronized void setPskServerCb(WolfSSLPskServerCallback callback)
throws IllegalStateException, WolfSSLJNIException {

confirmObjectIsActive();
Expand Down
Loading