Skip to content

Commit 56c4fe0

Browse files
authored
Merge pull request #182 from cconlon/inferFixes
Fixes from Infer scan over JNI/JSSE classes
2 parents 6ddc217 + aa52ea4 commit 56c4fe0

9 files changed

Lines changed: 325 additions & 269 deletions

File tree

scripts/infer.sh

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -17,10 +17,12 @@
1717
#
1818

1919
infer run -- javac \
20-
src/java/com/wolfssl/WolfSSLCertificate.java \
20+
src/java/com/wolfssl/WolfSSL.java \
21+
src/java/com/wolfssl/WolfSSLALPNSelectCallback.java \
2122
src/java/com/wolfssl/WolfSSLCertManager.java \
23+
src/java/com/wolfssl/WolfSSLCertRequest.java \
24+
src/java/com/wolfssl/WolfSSLCertificate.java \
2225
src/java/com/wolfssl/WolfSSLContext.java \
23-
src/java/com/wolfssl/WolfSSLCustomUser.java \
2426
src/java/com/wolfssl/WolfSSLDecryptVerifyCallback.java \
2527
src/java/com/wolfssl/WolfSSLEccSharedSecretCallback.java \
2628
src/java/com/wolfssl/WolfSSLEccSignCallback.java \
@@ -30,7 +32,6 @@ infer run -- javac \
3032
src/java/com/wolfssl/WolfSSLGenCookieCallback.java \
3133
src/java/com/wolfssl/WolfSSLIORecvCallback.java \
3234
src/java/com/wolfssl/WolfSSLIOSendCallback.java \
33-
src/java/com/wolfssl/WolfSSL.java \
3435
src/java/com/wolfssl/WolfSSLJNIException.java \
3536
src/java/com/wolfssl/WolfSSLLoggingCallback.java \
3637
src/java/com/wolfssl/WolfSSLMacEncryptCallback.java \
@@ -44,15 +45,17 @@ infer run -- javac \
4445
src/java/com/wolfssl/WolfSSLSession.java \
4546
src/java/com/wolfssl/WolfSSLTls13SecretCallback.java \
4647
src/java/com/wolfssl/WolfSSLVerifyCallback.java \
48+
src/java/com/wolfssl/WolfSSLX509Name.java \
4749
src/java/com/wolfssl/WolfSSLX509StoreCtx.java \
4850
src/java/com/wolfssl/wolfcrypt/ECC.java \
4951
src/java/com/wolfssl/wolfcrypt/EccKey.java \
5052
src/java/com/wolfssl/wolfcrypt/RSA.java \
5153
src/java/com/wolfssl/provider/jsse/WolfSSLAuthStore.java \
5254
src/java/com/wolfssl/provider/jsse/WolfSSLContext.java \
55+
src/java/com/wolfssl/provider/jsse/WolfSSLCustomUser.java \
5356
src/java/com/wolfssl/provider/jsse/WolfSSLDebug.java \
54-
src/java/com/wolfssl/provider/jsse/WolfSSLEngineHelper.java \
5557
src/java/com/wolfssl/provider/jsse/WolfSSLEngine.java \
58+
src/java/com/wolfssl/provider/jsse/WolfSSLEngineHelper.java \
5659
src/java/com/wolfssl/provider/jsse/WolfSSLGenericHostName.java \
5760
src/java/com/wolfssl/provider/jsse/WolfSSLImplementSSLSession.java \
5861
src/java/com/wolfssl/provider/jsse/WolfSSLInternalVerifyCb.java \
@@ -62,14 +65,15 @@ infer run -- javac \
6265
src/java/com/wolfssl/provider/jsse/WolfSSLParametersHelper.java \
6366
src/java/com/wolfssl/provider/jsse/WolfSSLParameters.java \
6467
src/java/com/wolfssl/provider/jsse/WolfSSLProvider.java \
65-
src/java/com/wolfssl/provider/jsse/WolfSSLServerSocketFactory.java \
68+
src/java/com/wolfssl/provider/jsse/WolfSSLSNIServerName.java \
6669
src/java/com/wolfssl/provider/jsse/WolfSSLServerSocket.java \
70+
src/java/com/wolfssl/provider/jsse/WolfSSLServerSocketFactory.java \
6771
src/java/com/wolfssl/provider/jsse/WolfSSLSessionContext.java \
68-
src/java/com/wolfssl/provider/jsse/WolfSSLSNIServerName.java \
6972
src/java/com/wolfssl/provider/jsse/WolfSSLSocketFactory.java \
7073
src/java/com/wolfssl/provider/jsse/WolfSSLSocket.java \
7174
src/java/com/wolfssl/provider/jsse/WolfSSLTrustManager.java \
7275
src/java/com/wolfssl/provider/jsse/WolfSSLTrustX509.java \
76+
src/java/com/wolfssl/provider/jsse/WolfSSLUtil.java \
7377
src/java/com/wolfssl/provider/jsse/WolfSSLX509.java \
7478
src/java/com/wolfssl/provider/jsse/WolfSSLX509X.java \
7579
src/java/com/wolfssl/provider/jsse/adapter/WolfSSLJDK8Helper.java

src/java/com/wolfssl/WolfSSLCertificate.java

Lines changed: 13 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -323,7 +323,9 @@ protected long getX509Ptr() throws IllegalStateException {
323323

324324
confirmObjectIsActive();
325325

326-
return this.x509Ptr;
326+
synchronized (x509Lock) {
327+
return this.x509Ptr;
328+
}
327329
}
328330

329331
/**
@@ -1435,14 +1437,14 @@ public Collection<List<?>> getSubjectAltNames()
14351437

14361438
confirmObjectIsActive();
14371439

1438-
if (this.altNames != null) {
1439-
/* already gathered, return cached version */
1440-
return this.altNames;
1441-
}
1440+
synchronized (x509Lock) {
1441+
if (this.altNames != null) {
1442+
/* already gathered, return cached version */
1443+
return this.altNames;
1444+
}
14421445

1443-
Collection<List<?>> names = new ArrayList<List<?>>();
1446+
Collection<List<?>> names = new ArrayList<List<?>>();
14441447

1445-
synchronized (x509Lock) {
14461448
String nextAltName = X509_get_next_altname(this.x509Ptr);
14471449
while (nextAltName != null) {
14481450
Object[] entry = new Object[2];
@@ -1453,12 +1455,12 @@ public Collection<List<?>> getSubjectAltNames()
14531455
names.add(Collections.unmodifiableList(entryList));
14541456
nextAltName = X509_get_next_altname(this.x509Ptr);
14551457
}
1456-
}
14571458

1458-
/* cache altNames collection for later use */
1459-
this.altNames = Collections.unmodifiableCollection(names);
1459+
/* cache altNames collection for later use */
1460+
this.altNames = Collections.unmodifiableCollection(names);
14601461

1461-
return this.altNames;
1462+
return this.altNames;
1463+
}
14621464
}
14631465

14641466
/**

src/java/com/wolfssl/WolfSSLContext.java

Lines changed: 25 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -104,32 +104,34 @@ public WolfSSLContext(long method) throws WolfSSLException {
104104
*
105105
* @return pointer to native WOLFSSL_CTX structure for this object
106106
*/
107-
protected synchronized long getContextPtr() {
108-
return sslCtxPtr;
107+
protected long getContextPtr() {
108+
synchronized (this.ctxLock) {
109+
return sslCtxPtr;
110+
}
109111
}
110112

111113
/* used by JNI native recv Cb */
112-
WolfSSLIORecvCallback getInternRecvCb() {
114+
synchronized WolfSSLIORecvCallback getInternRecvCb() {
113115
return internRecvCb;
114116
}
115117

116118
/* used by JNI native send Cb */
117-
WolfSSLIOSendCallback getInternSendCb() {
119+
synchronized WolfSSLIOSendCallback getInternSendCb() {
118120
return internSendCb;
119121
}
120122

121123
/* used by JNI native cookie Cb */
122-
WolfSSLGenCookieCallback getInternCookieCb() {
124+
synchronized WolfSSLGenCookieCallback getInternCookieCb() {
123125
return internCookieCb;
124126
}
125127

126128
/* used by JNI native MAC/encrypt Cb */
127-
WolfSSLMacEncryptCallback getInternMacEncryptCb() {
129+
synchronized WolfSSLMacEncryptCallback getInternMacEncryptCb() {
128130
return internMacEncryptCb;
129131
}
130132

131133
/* used by JNI native decrypt/verify Cb */
132-
WolfSSLDecryptVerifyCallback getInternDecryptVerifyCb() {
134+
synchronized WolfSSLDecryptVerifyCallback getInternDecryptVerifyCb() {
133135
return internDecryptVerifyCb;
134136
}
135137

@@ -1127,7 +1129,7 @@ public int setGroupMessages() throws IllegalStateException {
11271129
* @throws WolfSSLJNIException Internal JNI error
11281130
* @see #setIOSend(WolfSSLIOSendCallback)
11291131
*/
1130-
public void setIORecv(WolfSSLIORecvCallback callback)
1132+
public synchronized void setIORecv(WolfSSLIORecvCallback callback)
11311133
throws IllegalStateException, WolfSSLJNIException {
11321134

11331135
confirmObjectIsActive();
@@ -1161,7 +1163,7 @@ public void setIORecv(WolfSSLIORecvCallback callback)
11611163
* @throws WolfSSLJNIException Internal JNI error
11621164
* @see #setIORecv(WolfSSLIORecvCallback)
11631165
*/
1164-
public void setIOSend(WolfSSLIOSendCallback callback)
1166+
public synchronized void setIOSend(WolfSSLIOSendCallback callback)
11651167
throws IllegalStateException, WolfSSLJNIException {
11661168

11671169
confirmObjectIsActive();
@@ -1195,7 +1197,7 @@ public void setIOSend(WolfSSLIOSendCallback callback)
11951197
* @throws IllegalStateException WolfSSLContext has been freed
11961198
* @throws WolfSSLJNIException Internal JNI error
11971199
*/
1198-
public void setGenCookie(WolfSSLGenCookieCallback callback)
1200+
public synchronized void setGenCookie(WolfSSLGenCookieCallback callback)
11991201
throws IllegalStateException, WolfSSLJNIException {
12001202

12011203
confirmObjectIsActive();
@@ -1444,7 +1446,7 @@ public int setOCSPOverrideUrl(String url)
14441446
* @throws WolfSSLJNIException Internal JNI error
14451447
* @see #setDecryptVerifyCb(WolfSSLDecryptVerifyCallback)
14461448
*/
1447-
public void setMacEncryptCb(WolfSSLMacEncryptCallback callback)
1449+
public synchronized void setMacEncryptCb(WolfSSLMacEncryptCallback callback)
14481450
throws IllegalStateException, WolfSSLJNIException {
14491451

14501452
confirmObjectIsActive();
@@ -1483,7 +1485,8 @@ public void setMacEncryptCb(WolfSSLMacEncryptCallback callback)
14831485
* @throws WolfSSLJNIException Internal JNI error
14841486
* @see #setMacEncryptCb(WolfSSLMacEncryptCallback)
14851487
*/
1486-
public void setDecryptVerifyCb(WolfSSLDecryptVerifyCallback callback)
1488+
public synchronized void setDecryptVerifyCb(
1489+
WolfSSLDecryptVerifyCallback callback)
14871490
throws IllegalStateException, WolfSSLJNIException {
14881491

14891492
confirmObjectIsActive();
@@ -1519,7 +1522,7 @@ public void setDecryptVerifyCb(WolfSSLDecryptVerifyCallback callback)
15191522
* @throws WolfSSLJNIException Internal JNI error
15201523
* @see WolfSSLSession#setEccSignCtx(Object)
15211524
*/
1522-
public void setEccSignCb(WolfSSLEccSignCallback callback)
1525+
public synchronized void setEccSignCb(WolfSSLEccSignCallback callback)
15231526
throws IllegalStateException, WolfSSLJNIException {
15241527

15251528
confirmObjectIsActive();
@@ -1555,7 +1558,7 @@ public void setEccSignCb(WolfSSLEccSignCallback callback)
15551558
* @throws WolfSSLJNIException Internal JNI error
15561559
* @see WolfSSLSession#setEccVerifyCtx(Object)
15571560
*/
1558-
public void setEccVerifyCb(WolfSSLEccVerifyCallback callback)
1561+
public synchronized void setEccVerifyCb(WolfSSLEccVerifyCallback callback)
15591562
throws IllegalStateException, WolfSSLJNIException {
15601563

15611564
confirmObjectIsActive();
@@ -1606,7 +1609,8 @@ public void setEccVerifyCb(WolfSSLEccVerifyCallback callback)
16061609
* @see WolfSSLSession#setEccSignCtx(Object)
16071610
* @see WolfSSLSession#setEccVerifyCtx(Object)
16081611
*/
1609-
public void setEccSharedSecretCb(WolfSSLEccSharedSecretCallback callback)
1612+
public synchronized void setEccSharedSecretCb(
1613+
WolfSSLEccSharedSecretCallback callback)
16101614
throws IllegalStateException, WolfSSLJNIException {
16111615

16121616
confirmObjectIsActive();
@@ -1642,7 +1646,7 @@ public void setEccSharedSecretCb(WolfSSLEccSharedSecretCallback callback)
16421646
* @throws WolfSSLJNIException Internal JNI error
16431647
* @see WolfSSLSession#setRsaSignCtx(Object)
16441648
*/
1645-
public void setRsaSignCb(WolfSSLRsaSignCallback callback)
1649+
public synchronized void setRsaSignCb(WolfSSLRsaSignCallback callback)
16461650
throws IllegalStateException, WolfSSLJNIException {
16471651

16481652
confirmObjectIsActive();
@@ -1678,7 +1682,7 @@ public void setRsaSignCb(WolfSSLRsaSignCallback callback)
16781682
* @throws WolfSSLJNIException Internal JNI error
16791683
* @see WolfSSLSession#setRsaVerifyCtx(Object)
16801684
*/
1681-
public void setRsaVerifyCb(WolfSSLRsaVerifyCallback callback)
1685+
public synchronized void setRsaVerifyCb(WolfSSLRsaVerifyCallback callback)
16821686
throws IllegalStateException, WolfSSLJNIException {
16831687

16841688
confirmObjectIsActive();
@@ -1714,7 +1718,7 @@ public void setRsaVerifyCb(WolfSSLRsaVerifyCallback callback)
17141718
* @throws WolfSSLJNIException Internal JNI exception
17151719
* @see WolfSSLSession#setRsaEncCtx(Object)
17161720
*/
1717-
public void setRsaEncCb(WolfSSLRsaEncCallback callback)
1721+
public synchronized void setRsaEncCb(WolfSSLRsaEncCallback callback)
17181722
throws IllegalStateException, WolfSSLJNIException {
17191723

17201724
confirmObjectIsActive();
@@ -1749,7 +1753,7 @@ public void setRsaEncCb(WolfSSLRsaEncCallback callback)
17491753
* @throws WolfSSLJNIException Internal JNI error
17501754
* @see WolfSSLSession#setRsaDecCtx(Object)
17511755
*/
1752-
public void setRsaDecCb(WolfSSLRsaDecCallback callback)
1756+
public synchronized void setRsaDecCb(WolfSSLRsaDecCallback callback)
17531757
throws IllegalStateException, WolfSSLJNIException {
17541758

17551759
confirmObjectIsActive();
@@ -1788,7 +1792,7 @@ public void setRsaDecCb(WolfSSLRsaDecCallback callback)
17881792
* @see WolfSSLSession#getPskIdentityHint()
17891793
* @see WolfSSLSession#usePskIdentityHint(String)
17901794
*/
1791-
public void setPskClientCb(WolfSSLPskClientCallback callback)
1795+
public synchronized void setPskClientCb(WolfSSLPskClientCallback callback)
17921796
throws IllegalStateException, WolfSSLJNIException {
17931797

17941798
confirmObjectIsActive();
@@ -1826,7 +1830,7 @@ public void setPskClientCb(WolfSSLPskClientCallback callback)
18261830
* @see WolfSSLSession#getPskIdentityHint()
18271831
* @see WolfSSLSession#usePskIdentityHint(String)
18281832
*/
1829-
public void setPskServerCb(WolfSSLPskServerCallback callback)
1833+
public synchronized void setPskServerCb(WolfSSLPskServerCallback callback)
18301834
throws IllegalStateException, WolfSSLJNIException {
18311835

18321836
confirmObjectIsActive();

0 commit comments

Comments
 (0)