@@ -4159,6 +4159,10 @@ int wolfSSL_CTX_use_PrivateKey_Id(WOLFSSL_CTX* ctx, const unsigned char* id,
41594159
41604160 WOLFSSL_ENTER ("wolfSSL_CTX_use_PrivateKey_Id" );
41614161
4162+ if (ctx == NULL || id == NULL || sz < 0 ) {
4163+ return 0 ;
4164+ }
4165+
41624166 /* Dispose of old private key and allocate and copy in id. */
41634167 FreeDer (& ctx -> privateKey );
41644168 if (AllocCopyDer (& ctx -> privateKey , id , (word32 )sz , PRIVATEKEY_TYPE ,
@@ -4227,10 +4231,16 @@ int wolfSSL_CTX_use_PrivateKey_Label(WOLFSSL_CTX* ctx, const char* label,
42274231 int devId )
42284232{
42294233 int ret = 1 ;
4230- word32 sz = ( word32 ) XSTRLEN ( label ) + 1 ;
4234+ word32 sz ;
42314235
42324236 WOLFSSL_ENTER ("wolfSSL_CTX_use_PrivateKey_Label" );
42334237
4238+ if (ctx == NULL || label == NULL ) {
4239+ return 0 ;
4240+ }
4241+
4242+ sz = (word32 )XSTRLEN (label ) + 1 ;
4243+
42344244 /* Dispose of old private key and allocate and copy in label. */
42354245 FreeDer (& ctx -> privateKey );
42364246 if (AllocCopyDer (& ctx -> privateKey , (const byte * )label , (word32 )sz ,
@@ -4268,7 +4278,7 @@ int wolfSSL_CTX_use_AltPrivateKey_Id(WOLFSSL_CTX* ctx, const unsigned char* id,
42684278
42694279 WOLFSSL_ENTER ("wolfSSL_CTX_use_AltPrivateKey_Id" );
42704280
4271- if ((ctx == NULL ) || (id == NULL )) {
4281+ if ((ctx == NULL ) || (id == NULL ) || ( sz < 0 ) ) {
42724282 ret = 0 ;
42734283 }
42744284
@@ -4280,7 +4290,7 @@ int wolfSSL_CTX_use_AltPrivateKey_Id(WOLFSSL_CTX* ctx, const unsigned char* id,
42804290 }
42814291 }
42824292 if (ret == 1 ) {
4283- XMEMCPY (ctx -> altPrivateKey -> buffer , id , sz );
4293+ XMEMCPY (ctx -> altPrivateKey -> buffer , id , ( word32 ) sz );
42844294 ctx -> altPrivateKeyId = 1 ;
42854295 if (devId != INVALID_DEVID ) {
42864296 ctx -> altPrivateKeyDevId = devId ;
@@ -4561,6 +4571,10 @@ int wolfSSL_use_PrivateKey_Id(WOLFSSL* ssl, const unsigned char* id,
45614571{
45624572 int ret = 1 ;
45634573
4574+ if (ssl == NULL || id == NULL || sz < 0 ) {
4575+ return 0 ;
4576+ }
4577+
45644578 /* Dispose of old private key if owned and allocate and copy in id. */
45654579 if (ssl -> buffers .weOwnKey ) {
45664580 FreeDer (& ssl -> buffers .key );
@@ -4629,7 +4643,13 @@ int wolfSSL_use_PrivateKey_Id_ex(WOLFSSL* ssl, const unsigned char* id,
46294643int wolfSSL_use_PrivateKey_Label (WOLFSSL * ssl , const char * label , int devId )
46304644{
46314645 int ret = 1 ;
4632- word32 sz = (word32 )XSTRLEN (label ) + 1 ;
4646+ word32 sz ;
4647+
4648+ if (ssl == NULL || label == NULL ) {
4649+ return 0 ;
4650+ }
4651+
4652+ sz = (word32 )XSTRLEN (label ) + 1 ;
46334653
46344654 /* Dispose of old private key if owned and allocate and copy in label. */
46354655 if (ssl -> buffers .weOwnKey ) {
@@ -4672,7 +4692,7 @@ int wolfSSL_use_AltPrivateKey_Id(WOLFSSL* ssl, const unsigned char* id, long sz,
46724692{
46734693 int ret = 1 ;
46744694
4675- if ((ssl == NULL ) || (id == NULL )) {
4695+ if ((ssl == NULL ) || (id == NULL ) || ( sz < 0 ) ) {
46764696 ret = 0 ;
46774697 }
46784698
@@ -4689,7 +4709,7 @@ int wolfSSL_use_AltPrivateKey_Id(WOLFSSL* ssl, const unsigned char* id, long sz,
46894709 }
46904710 }
46914711 if (ret == 1 ) {
4692- XMEMCPY (ssl -> buffers .altKey -> buffer , id , sz );
4712+ XMEMCPY (ssl -> buffers .altKey -> buffer , id , ( word32 ) sz );
46934713 ssl -> buffers .weOwnAltKey = 1 ;
46944714 ssl -> buffers .altKeyId = 1 ;
46954715 if (devId != INVALID_DEVID ) {
0 commit comments