Changes to address issues brought up by the security review.
This commit is contained in:
@@ -152,22 +152,36 @@ IpcClientOpenUnixRemoteEndPoint(
|
||||
pSocketFileName));
|
||||
|
||||
// Allocate a handle for the endpoint
|
||||
uint32_t handle = remoteEndPointHandleAllocator ++;
|
||||
uint32_t handle = remoteEndPointHandleAllocator + 1;
|
||||
|
||||
// Insert the new RemoteEndPoint into the REP map
|
||||
REPIterBoolPair insertResult;
|
||||
insertResult = repMap.insert(make_pair(handle, pSmartRemoteEndPoint));
|
||||
if (!insertResult.second)
|
||||
// Protect against wrap-around
|
||||
if (handle != 0)
|
||||
{
|
||||
// Insertion failed
|
||||
DbgTrace(0, "IpcClientOpenUnixRemoteEndPoint- Unable to insert RemoteEndPoint into REP\n", 0);
|
||||
delete pSmartRemoteEndPoint;
|
||||
// Insert the new RemoteEndPoint into the REP map
|
||||
REPIterBoolPair insertResult;
|
||||
insertResult = repMap.insert(make_pair(handle, pSmartRemoteEndPoint));
|
||||
if (!insertResult.second)
|
||||
{
|
||||
// Insertion failed
|
||||
DbgTrace(0, "IpcClientOpenUnixRemoteEndPoint- Unable to insert RemoteEndPoint into REP\n", 0);
|
||||
delete pSmartRemoteEndPoint;
|
||||
}
|
||||
else
|
||||
{
|
||||
// RemoteEndPoint inserted in the REP map, success.
|
||||
//
|
||||
// Consume the allocated handle
|
||||
remoteEndPointHandleAllocator ++;
|
||||
*pEndPointHandle = handle;
|
||||
|
||||
retStatus = 0;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
// RemoteEndPoint inserted in the REP map, success.
|
||||
*pEndPointHandle = handle;
|
||||
retStatus = 0;
|
||||
// Handle allocator wrap-around prevented
|
||||
DbgTrace(0, "IpcClientOpenUnixRemoteEndPoint- Handle allocator wrap-around prevented\n", 0);
|
||||
delete pSmartRemoteEndPoint;
|
||||
}
|
||||
} catch (...) {
|
||||
DbgTrace(0, "IpcClientOpenUnixRemoteEndPoint- Exception caught\n", 0);
|
||||
@@ -254,22 +268,35 @@ IpcClientOpenInetRemoteEndPoint(
|
||||
address));
|
||||
|
||||
// Allocate a handle for the endpoint
|
||||
uint32_t handle = remoteEndPointHandleAllocator ++;
|
||||
uint32_t handle = remoteEndPointHandleAllocator + 1;
|
||||
|
||||
// Insert the new RemoteEndPoint into the REP map
|
||||
REPIterBoolPair insertResult;
|
||||
insertResult = repMap.insert(make_pair(handle, pSmartRemoteEndPoint));
|
||||
if (!insertResult.second)
|
||||
// Protect against wrap-around
|
||||
if (handle != 0)
|
||||
{
|
||||
// Insertion failed
|
||||
DbgTrace(0, "IpcClientOpenInetRemoteEndPoint- Unable to insert RemoteEndPoint into REP\n", 0);
|
||||
delete pSmartRemoteEndPoint;
|
||||
// Insert the new RemoteEndPoint into the REP map
|
||||
REPIterBoolPair insertResult;
|
||||
insertResult = repMap.insert(make_pair(handle, pSmartRemoteEndPoint));
|
||||
if (!insertResult.second)
|
||||
{
|
||||
// Insertion failed
|
||||
DbgTrace(0, "IpcClientOpenInetRemoteEndPoint- Unable to insert RemoteEndPoint into REP\n", 0);
|
||||
delete pSmartRemoteEndPoint;
|
||||
}
|
||||
else
|
||||
{
|
||||
// RemoteEndPoint inserted in the REP map, success.
|
||||
//
|
||||
// Consume the allocated handle
|
||||
remoteEndPointHandleAllocator ++;
|
||||
*pEndPointHandle = handle;
|
||||
retStatus = 0;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
// RemoteEndPoint inserted in the REP map, success.
|
||||
*pEndPointHandle = handle;
|
||||
retStatus = 0;
|
||||
// Handle allocator wrap-around prevented
|
||||
DbgTrace(0, "IpcClientOpenInetRemoteEndPoint- Handle allocator wrap-around prevented\n", 0);
|
||||
delete pSmartRemoteEndPoint;
|
||||
}
|
||||
} catch (...) {
|
||||
DbgTrace(0, "IpcClientOpenInetRemoteEndPoint- Exception caught\n", 0);
|
||||
@@ -366,9 +393,9 @@ int
|
||||
IpcClientSubmitReq(
|
||||
IN uint32_t endPointHandle,
|
||||
IN char *pClientData,
|
||||
IN int32_t clientDataLen,
|
||||
IN uint32_t clientDataLen,
|
||||
INOUT char **ppServerData,
|
||||
INOUT int32_t *pServerDataLen)
|
||||
INOUT uint32_t *pServerDataLen)
|
||||
//
|
||||
// Arguments In: endPointHandle - Handle of the remote endpoint that will
|
||||
// be the target of the request.
|
||||
|
||||
Reference in New Issue
Block a user