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

Justin Bertram updated ARTEMIS-4805:
------------------------------------
    Description: 
In [line 
333|https://github.com/apache/activemq-artemis/blob/main/artemis-server/src/main/java/org/apache/activemq/artemis/core/server/impl/ScaleDownHandler.java]
 in file {{ScaleDownHandler.java}} variable {{queueCreateSession}} is 
initialized
{code:java}
ClientSession queueCreateSession = sessionFactory.createSession(user, password, 
false, true, true, false, 0);{code}
In  [line 
851|https://github.com/apache/activemq-artemis/blob/main/artemis-core-client/src/main/java/org/apache/activemq/artemis/core/client/impl/ClientSessionFactoryImpl.java]
 in {{ClientSessionFactoryImp.java}}, the code synchronizes with the 
{{sessions}} collection and checks whether the current session is closed or 
whether the client protocol manager is down. If the closed session or inactive 
client protocol manager condition is met, the session is closed and {{null}} is 
returned
{code:java}
if (closed || !clientProtocolManager.isAlive()) {
   session.close();
   return null;
}{code}
The {{queueCreateSession}} variable could potentially be {{null}}.

In [line 
357|https://github.com/apache/activemq-artemis/blob/main/artemis-server/src/main/java/org/apache/activemq/artemis/core/server/impl/ScaleDownHandler.java]
 in file {{ScaleDownHandler.java}} variable {{queueCreateSession}} is passed to 
the function {{createQueueWithRoutingTypeIfNecessaryAndGetID}} as the first 
argument:
{code:java}
queueID = createQueueWithRoutingTypeIfNecessaryAndGetID(queueCreateSession, 
queue, message.getAddressSimpleString(), message.getRoutingType());{code}
In [line 
450|https://github.com/apache/activemq-artemis/blob/main/artemis-server/src/main/java/org/apache/activemq/artemis/core/server/impl/ScaleDownHandler.java]
 in file {{ScaleDownHandler.java}} potential {{null}} dereference occurs:
{code:java}
session.createQueue(new QueueConfiguration(...));{code}

  was:
In [line 
333|https://github.com/apache/activemq-artemis/blob/main/artemis-server/src/main/java/org/apache/activemq/artemis/core/server/impl/ScaleDownHandler.java]
 in file ScaleDownHandler.java variable *queueCreateSession* is initialized

 

ClientSession queueCreateSession = sessionFactory.createSession(user, password, 
false, true, true, false, 0);

 

In  [line 
851|https://github.com/apache/activemq-artemis/blob/main/artemis-core-client/src/main/java/org/apache/activemq/artemis/core/client/impl/ClientSessionFactoryImpl.java]
 in ClientSessionFactoryImp.java, the code synchronizes with the sessions 
collection and checks whether the current session is closed or whether the 
client protocol manager is down. If the closed session or inactive client 
protocol manager condition is met, the session is closed and null is returned

 

if (closed || !clientProtocolManager.isAlive())

{     session.close();     return null; }

 

The *queueCreateSession* variable could potentially be null

In [line 
357|https://github.com/apache/activemq-artemis/blob/main/artemis-server/src/main/java/org/apache/activemq/artemis/core/server/impl/ScaleDownHandler.java]
 in file ScaleDownHandler.java variable *queueCreateSession* is passed to the 
function createQueueWithRoutingTypeIfNecessaryAndGetID as the first argument

 

queueID = createQueueWithRoutingTypeIfNecessaryAndGetID(queueCreateSession, 
queue, message.getAddressSimpleString(), message.getRoutingType());

 

In [line 
450|https://github.com/apache/activemq-artemis/blob/main/artemis-server/src/main/java/org/apache/activemq/artemis/core/server/impl/ScaleDownHandler.java]
 in file ScaleDownHandler.java potential null dereference occurs

 

session.createQueue(new QueueConfiguration(...));


> Null dereferencing in ScaleDownHandler.java
> -------------------------------------------
>
>                 Key: ARTEMIS-4805
>                 URL: https://issues.apache.org/jira/browse/ARTEMIS-4805
>             Project: ActiveMQ Artemis
>          Issue Type: Bug
>            Reporter: Galkin Alexey
>            Priority: Major
>
> In [line 
> 333|https://github.com/apache/activemq-artemis/blob/main/artemis-server/src/main/java/org/apache/activemq/artemis/core/server/impl/ScaleDownHandler.java]
>  in file {{ScaleDownHandler.java}} variable {{queueCreateSession}} is 
> initialized
> {code:java}
> ClientSession queueCreateSession = sessionFactory.createSession(user, 
> password, false, true, true, false, 0);{code}
> In  [line 
> 851|https://github.com/apache/activemq-artemis/blob/main/artemis-core-client/src/main/java/org/apache/activemq/artemis/core/client/impl/ClientSessionFactoryImpl.java]
>  in {{ClientSessionFactoryImp.java}}, the code synchronizes with the 
> {{sessions}} collection and checks whether the current session is closed or 
> whether the client protocol manager is down. If the closed session or 
> inactive client protocol manager condition is met, the session is closed and 
> {{null}} is returned
> {code:java}
> if (closed || !clientProtocolManager.isAlive()) {
>    session.close();
>    return null;
> }{code}
> The {{queueCreateSession}} variable could potentially be {{null}}.
> In [line 
> 357|https://github.com/apache/activemq-artemis/blob/main/artemis-server/src/main/java/org/apache/activemq/artemis/core/server/impl/ScaleDownHandler.java]
>  in file {{ScaleDownHandler.java}} variable {{queueCreateSession}} is passed 
> to the function {{createQueueWithRoutingTypeIfNecessaryAndGetID}} as the 
> first argument:
> {code:java}
> queueID = createQueueWithRoutingTypeIfNecessaryAndGetID(queueCreateSession, 
> queue, message.getAddressSimpleString(), message.getRoutingType());{code}
> In [line 
> 450|https://github.com/apache/activemq-artemis/blob/main/artemis-server/src/main/java/org/apache/activemq/artemis/core/server/impl/ScaleDownHandler.java]
>  in file {{ScaleDownHandler.java}} potential {{null}} dereference occurs:
> {code:java}
> session.createQueue(new QueueConfiguration(...));{code}



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

---------------------------------------------------------------------
To unsubscribe, e-mail: issues-unsubscr...@activemq.apache.org
For additional commands, e-mail: issues-h...@activemq.apache.org
For further information, visit: https://activemq.apache.org/contact


Reply via email to