mirror of
https://github.com/openjdk/jdk.git
synced 2026-07-18 15:09:37 +00:00
7024697: SessionRef.dispose() should determine if the token referred to by the token object is still valid
Reviewed-by: valeriep
This commit is contained in:
parent
099b9b9198
commit
90502358ad
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2003, 2011, Oracle and/or its affiliates. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
@ -87,7 +87,7 @@ final class Session implements Comparable<Session> {
|
||||
}
|
||||
|
||||
long id() {
|
||||
if (token.isPresent(this) == false) {
|
||||
if (token.isPresent(this.id) == false) {
|
||||
throw new ProviderException("Token has been removed");
|
||||
}
|
||||
lastAccess = System.currentTimeMillis();
|
||||
@ -167,7 +167,9 @@ final class SessionRef extends PhantomReference<Session>
|
||||
void dispose() {
|
||||
refList.remove(this);
|
||||
try {
|
||||
token.p11.C_CloseSession(id);
|
||||
if (token.isPresent(id)) {
|
||||
token.p11.C_CloseSession(id);
|
||||
}
|
||||
} catch (PKCS11Exception e1) {
|
||||
// ignore
|
||||
} catch (ProviderException e2) {
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2003, 2006, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2003, 2011, Oracle and/or its affiliates. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
@ -217,7 +217,7 @@ class Token implements Serializable {
|
||||
|
||||
// return whether a token is present (i.e. token not removed)
|
||||
// returns cached value if current, otherwise performs new check
|
||||
boolean isPresent(Session session) {
|
||||
boolean isPresent(long sessionID) {
|
||||
if (removable == false) {
|
||||
return true;
|
||||
}
|
||||
@ -238,7 +238,7 @@ class Token implements Serializable {
|
||||
// the token should return an error
|
||||
CK_SESSION_INFO sessInfo =
|
||||
provider.p11.C_GetSessionInfo
|
||||
(session.idInternal());
|
||||
(sessionID);
|
||||
ok = true;
|
||||
}
|
||||
} catch (PKCS11Exception e) {
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user