Skip to content
This repository has been archived by the owner on Oct 26, 2021. It is now read-only.

Commit

Permalink
Fix client validation in LifecycleRequestComplete
Browse files Browse the repository at this point in the history
The client is validated by comparing the client handle and request ID
received as a part of D-Bus call LifecycleRequestComplete. The reqeust
ID is generated by converting the client handle to guint, which is 32
bit unsigned int. The client handle is a pointer which can be of 64 bits
in size on 64 bit machine. The existing comparison between client handle
and request ID is casting request ID to a pointer type, which can give
wrong results when comparting against a 64 bit pointer. This patch fixes
it by modifying the comparision to cast the client handle to 32 bit
instead.

Signed-off-by: Vishal Thanki <[email protected]>
  • Loading branch information
vthanki committed Apr 2, 2020
1 parent 253d10a commit ccc7057
Showing 1 changed file with 1 addition and 0 deletions.
1 change: 1 addition & 0 deletions NodeStateAccess/NodeStateAccess.c
Original file line number Diff line number Diff line change
Expand Up @@ -845,6 +845,7 @@ static gboolean NSMA__boOnHandleLifecycleRequestComplete(NodeStateConsumer *

/* Check if the client is the one, we are waiting for. */
if(NSMA__pCurrentLcConsumer == (NodeStateLifeCycleConsumer*) u32RequestId)
if(u32RequestId == (guint) NSMA__pCurrentLcConsumer)
{
enErrorStatus = NsmErrorStatus_Ok;
/* The client is the expected one. Pass the status to the NSM. */
Expand Down

0 comments on commit ccc7057

Please sign in to comment.