Bug 261506. Handle binary keys up to 128k
This commit is contained in:
parent
5b7948b5d2
commit
0bfc0a3063
@ -1,3 +1,8 @@
|
|||||||
|
-------------------------------------------------------------------
|
||||||
|
Thu Apr 5 15:30:41 MDT 2007 - jnorman@novell.com
|
||||||
|
|
||||||
|
- Bug 261506. Support binary keys up to 128k
|
||||||
|
|
||||||
-------------------------------------------------------------------
|
-------------------------------------------------------------------
|
||||||
Mon Apr 2 14:19:58 MDT 2007 - jnorman@novell.com
|
Mon Apr 2 14:19:58 MDT 2007 - jnorman@novell.com
|
||||||
|
|
||||||
|
@ -170,6 +170,7 @@ static SS_UTF8_T SSCS_LOCAL_REMOTE_KEY_CHAIN_ID[] = {"SSCS_LOCAL_REMOTE_KEY_CHA
|
|||||||
#define NSSCS_MID_SECRET_BUF_LEN 32768 //* (4K-128)to match server
|
#define NSSCS_MID_SECRET_BUF_LEN 32768 //* (4K-128)to match server
|
||||||
#define NSSCS_MAX_SECRET_BUF_LEN 60416 //* (59K)to match server
|
#define NSSCS_MAX_SECRET_BUF_LEN 60416 //* (59K)to match server
|
||||||
#define NSSCS_MAX_PWORD_HINT_LEN 128 //* maximum hint (bytes)
|
#define NSSCS_MAX_PWORD_HINT_LEN 128 //* maximum hint (bytes)
|
||||||
|
#define NSSCS_MAX_BINARY_VALUE_LEN 128*1024 //* Max for binary values (bytes)
|
||||||
|
|
||||||
|
|
||||||
#define NSSCS_MAX_KEYCHAIN_ID_LEN 256 //* in bytes including NULL
|
#define NSSCS_MAX_KEYCHAIN_ID_LEN 256 //* in bytes including NULL
|
||||||
|
@ -34,6 +34,7 @@ typedef uint8_t Byte;
|
|||||||
// Used for global buffers.
|
// Used for global buffers.
|
||||||
#define MIN_REQUEST_BUF_LEN 32*1024
|
#define MIN_REQUEST_BUF_LEN 32*1024
|
||||||
#define MIN_REPLY_BUF_LEN 32*1024
|
#define MIN_REPLY_BUF_LEN 32*1024
|
||||||
|
#define MAX_BINARY_KEY_LEN 256*1024
|
||||||
|
|
||||||
#ifdef SSCS_LINUX_PLAT_F
|
#ifdef SSCS_LINUX_PLAT_F
|
||||||
#include "sscs_unx_ipc_client.h"
|
#include "sscs_unx_ipc_client.h"
|
||||||
|
@ -178,6 +178,7 @@ int ipc_unx_read(int fd, Byte *pData, int bytes)
|
|||||||
|
|
||||||
int bytesToRead = 0; // Keep track of number of bytes to read
|
int bytesToRead = 0; // Keep track of number of bytes to read
|
||||||
int bytesRead = 0; // Number of bytes read
|
int bytesRead = 0; // Number of bytes read
|
||||||
|
int totalBytesRead = 0;
|
||||||
int retVal = 0;
|
int retVal = 0;
|
||||||
|
|
||||||
for(bytesToRead = bytes; bytesToRead;)
|
for(bytesToRead = bytes; bytesToRead;)
|
||||||
@ -194,9 +195,10 @@ int ipc_unx_read(int fd, Byte *pData, int bytes)
|
|||||||
}
|
}
|
||||||
bytesToRead -= bytesRead;
|
bytesToRead -= bytesRead;
|
||||||
pData += bytesRead;
|
pData += bytesRead;
|
||||||
|
totalBytesRead += bytesRead;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return bytesRead;
|
return totalBytesRead;
|
||||||
}
|
}
|
||||||
//#endif
|
//#endif
|
||||||
|
|
||||||
|
@ -3078,14 +3078,14 @@ int32_t ipc_ReadBinaryKey
|
|||||||
return(NSSCS_E_SYSTEM_FAILURE);
|
return(NSSCS_E_SYSTEM_FAILURE);
|
||||||
}
|
}
|
||||||
|
|
||||||
if((gpReplyBuf = malloc(MIN_REPLY_BUF_LEN)) == NULL)
|
if((gpReplyBuf = malloc(MAX_BINARY_KEY_LEN + 1024)) == NULL)
|
||||||
{
|
{
|
||||||
free(gpReqBuf);
|
free(gpReqBuf);
|
||||||
return(NSSCS_E_SYSTEM_FAILURE);
|
return(NSSCS_E_SYSTEM_FAILURE);
|
||||||
}
|
}
|
||||||
|
|
||||||
memset(gpReqBuf, 0, MIN_REQUEST_BUF_LEN);
|
memset(gpReqBuf, 0, MIN_REQUEST_BUF_LEN);
|
||||||
memset(gpReplyBuf, 0, MIN_REPLY_BUF_LEN);
|
memset(gpReplyBuf, 0, MAX_BINARY_KEY_LEN + 1024);
|
||||||
|
|
||||||
do
|
do
|
||||||
{
|
{
|
||||||
@ -3584,18 +3584,16 @@ int ipc_WriteBinaryKey
|
|||||||
Byte *gpReplyBuf = NULL;
|
Byte *gpReplyBuf = NULL;
|
||||||
Byte *pReq = NULL, *pReply = NULL;
|
Byte *pReq = NULL, *pReply = NULL;
|
||||||
|
|
||||||
if((gpReqBuf = malloc(MIN_REQUEST_BUF_LEN)) == NULL)
|
if (valLen > MAX_BINARY_KEY_LEN)
|
||||||
{
|
{
|
||||||
return(NSSCS_E_SYSTEM_FAILURE);
|
return(NSSCS_E_SYSTEM_FAILURE);
|
||||||
}
|
}
|
||||||
|
|
||||||
if((gpReplyBuf = malloc(MIN_REPLY_BUF_LEN)) == NULL)
|
if((gpReplyBuf = malloc(MIN_REPLY_BUF_LEN)) == NULL)
|
||||||
{
|
{
|
||||||
free(gpReqBuf);
|
|
||||||
return(NSSCS_E_SYSTEM_FAILURE);
|
return(NSSCS_E_SYSTEM_FAILURE);
|
||||||
}
|
}
|
||||||
|
|
||||||
memset(gpReqBuf,0, MIN_REQUEST_BUF_LEN);
|
|
||||||
memset(gpReplyBuf,0, MIN_REPLY_BUF_LEN);
|
memset(gpReplyBuf,0, MIN_REPLY_BUF_LEN);
|
||||||
|
|
||||||
do
|
do
|
||||||
@ -3659,29 +3657,17 @@ int ipc_WriteBinaryKey
|
|||||||
msgLen += MSG_DWORD_LEN;
|
msgLen += MSG_DWORD_LEN;
|
||||||
}
|
}
|
||||||
|
|
||||||
if( msgLen > MIN_REQUEST_BUF_LEN )
|
// now allocate the request buffer
|
||||||
|
if((gpReqBuf = malloc(msgLen)) == NULL)
|
||||||
{
|
{
|
||||||
tmpBuf = (Byte*)malloc(msgLen);
|
free(gpReplyBuf);
|
||||||
if( NULL == tmpBuf )
|
return(NSSCS_E_SYSTEM_FAILURE);
|
||||||
{
|
|
||||||
retCode = NSSCS_E_SYSTEM_FAILURE;
|
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
memset(tmpBuf,0,msgLen);
|
|
||||||
pReq = tmpBuf;
|
memset(gpReqBuf, 0, msgLen);
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
pReq = gpReqBuf;
|
pReq = gpReqBuf;
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
if(msgLen >= MIN_REQUEST_BUF_LEN)
|
|
||||||
{
|
|
||||||
retCode = NSSCS_E_SYSTEM_FAILURE;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
// marshall the request
|
||||||
msgid = REQ_WRITE_BINARY_KEY_MSGID;
|
msgid = REQ_WRITE_BINARY_KEY_MSGID;
|
||||||
|
|
||||||
memcpy(pReq, &msgid, MSGID_LEN);
|
memcpy(pReq, &msgid, MSGID_LEN);
|
||||||
@ -3742,14 +3728,9 @@ int ipc_WriteBinaryKey
|
|||||||
memcpy(pReq,&extID,MSG_DWORD_LEN);
|
memcpy(pReq,&extID,MSG_DWORD_LEN);
|
||||||
}
|
}
|
||||||
|
|
||||||
if(tmpBuf != NULL)
|
|
||||||
{
|
// write the data
|
||||||
retVal = IPC_WRITE(ssHandle->platHandle,tmpBuf,msgLen);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
retVal = IPC_WRITE(ssHandle->platHandle,gpReqBuf, msgLen);
|
retVal = IPC_WRITE(ssHandle->platHandle,gpReqBuf, msgLen);
|
||||||
}
|
|
||||||
if(retVal < 0)
|
if(retVal < 0)
|
||||||
{
|
{
|
||||||
//log debug info here
|
//log debug info here
|
||||||
@ -3777,15 +3758,10 @@ int ipc_WriteBinaryKey
|
|||||||
}
|
}
|
||||||
while(0);
|
while(0);
|
||||||
|
|
||||||
if( tmpBuf != NULL )
|
|
||||||
{
|
|
||||||
free(tmpBuf);
|
|
||||||
tmpBuf = NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
if(gpReqBuf)
|
if(gpReqBuf)
|
||||||
{
|
{
|
||||||
memset(gpReqBuf, 0, MIN_REQUEST_BUF_LEN);
|
memset(gpReqBuf, 0, msgLen);
|
||||||
free(gpReqBuf);
|
free(gpReqBuf);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1747,7 +1747,7 @@ miCASAWriteBinaryKey
|
|||||||
return(NSSCS_E_BUFFER_LEN);
|
return(NSSCS_E_BUFFER_LEN);
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((keyLen > NSSCS_MAX_SECRET_ID_LEN/4) || (*valLen > NSSCS_MAX_SECRET_BUF_LEN/4))
|
if ((keyLen > NSSCS_MAX_SECRET_ID_LEN/4) || (*valLen > NSSCS_MAX_BINARY_VALUE_LEN))
|
||||||
{
|
{
|
||||||
return(NSSCS_E_BUFFER_LEN);
|
return(NSSCS_E_BUFFER_LEN);
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user