@@ -711,8 +711,19 @@ static int evpCipherBlock(WOLFSSL_EVP_CIPHER_CTX *ctx,
711711static int wolfSSL_EVP_CipherUpdate_GCM_AAD (WOLFSSL_EVP_CIPHER_CTX * ctx ,
712712 const unsigned char * in , int inl ) {
713713 if (in && inl > 0 ) {
714- byte * tmp = (byte * )XREALLOC (ctx -> authIn ,
714+ byte * tmp ;
715+ #ifdef WOLFSSL_NO_REALLOC
716+ tmp = (byte * )XMALLOC ((size_t )(ctx -> authInSz + inl ), NULL ,
717+ DYNAMIC_TYPE_OPENSSL );
718+ if (tmp != NULL ) {
719+ XMEMCPY (tmp , ctx -> authIn , (size_t )ctx -> authInSz );
720+ XFREE (ctx -> authIn , NULL , DYNAMIC_TYPE_OPENSSL );
721+ ctx -> authIn = NULL ;
722+ }
723+ #else
724+ tmp = (byte * )XREALLOC (ctx -> authIn ,
715725 (size_t )(ctx -> authInSz + inl ), NULL , DYNAMIC_TYPE_OPENSSL );
726+ #endif
716727 if (tmp ) {
717728 ctx -> authIn = tmp ;
718729 XMEMCPY (ctx -> authIn + ctx -> authInSz , in , (size_t )inl );
@@ -745,9 +756,19 @@ static int wolfSSL_EVP_CipherUpdate_GCM(WOLFSSL_EVP_CIPHER_CTX *ctx,
745756 /* Buffer input for one-shot API */
746757 if (inl > 0 ) {
747758 byte * tmp ;
759+ #ifdef WOLFSSL_NO_REALLOC
760+ tmp = (byte * )XMALLOC ((size_t )(ctx -> authBufferLen + inl ), NULL ,
761+ DYNAMIC_TYPE_OPENSSL );
762+ if (tmp != NULL ) {
763+ XMEMCPY (tmp , ctx -> authBuffer , (size_t )ctx -> authBufferLen );
764+ XFREE (ctx -> authBuffer , NULL , DYNAMIC_TYPE_OPENSSL );
765+ ctx -> authBuffer = NULL ;
766+ }
767+ #else
748768 tmp = (byte * )XREALLOC (ctx -> authBuffer ,
749769 (size_t )(ctx -> authBufferLen + inl ), NULL ,
750770 DYNAMIC_TYPE_OPENSSL );
771+ #endif
751772 if (tmp ) {
752773 XMEMCPY (tmp + ctx -> authBufferLen , in , (size_t )inl );
753774 ctx -> authBufferLen += inl ;
@@ -817,8 +838,19 @@ static int wolfSSL_EVP_CipherUpdate_GCM(WOLFSSL_EVP_CIPHER_CTX *ctx,
817838static int wolfSSL_EVP_CipherUpdate_CCM_AAD (WOLFSSL_EVP_CIPHER_CTX * ctx ,
818839 const unsigned char * in , int inl ) {
819840 if (in && inl > 0 ) {
820- byte * tmp = (byte * )XREALLOC (ctx -> authIn ,
841+ byte * tmp ;
842+ #ifdef WOLFSSL_NO_REALLOC
843+ tmp = (byte * )XMALLOC ((size_t )(ctx -> authInSz + inl ), NULL ,
844+ DYNAMIC_TYPE_OPENSSL );
845+ if (tmp != NULL ) {
846+ XMEMCPY (tmp , ctx -> authIn , (size_t )ctx -> authInSz );
847+ XFREE (ctx -> authIn , NULL , DYNAMIC_TYPE_OPENSSL );
848+ ctx -> authIn = NULL ;
849+ }
850+ #else
851+ tmp = (byte * )XREALLOC (ctx -> authIn ,
821852 (size_t )(ctx -> authInSz + inl ), NULL , DYNAMIC_TYPE_OPENSSL );
853+ #endif
822854 if (tmp ) {
823855 ctx -> authIn = tmp ;
824856 XMEMCPY (ctx -> authIn + ctx -> authInSz , in , (size_t )inl );
@@ -843,9 +875,19 @@ static int wolfSSL_EVP_CipherUpdate_CCM(WOLFSSL_EVP_CIPHER_CTX *ctx,
843875 /* Buffer input for one-shot API */
844876 if (inl > 0 ) {
845877 byte * tmp ;
878+ #ifdef WOLFSSL_NO_REALLOC
879+ tmp = (byte * )XMALLOC ((size_t )(ctx -> authBufferLen + inl ), NULL ,
880+ DYNAMIC_TYPE_OPENSSL );
881+ if (tmp != NULL ) {
882+ XMEMCPY (tmp , ctx -> authBuffer , (size_t )ctx -> authBufferLen );
883+ XFREE (ctx -> authBuffer , NULL , DYNAMIC_TYPE_OPENSSL );
884+ ctx -> authBuffer = NULL ;
885+ }
886+ #else
846887 tmp = (byte * )XREALLOC (ctx -> authBuffer ,
847888 (size_t )(ctx -> authBufferLen + inl ), NULL ,
848889 DYNAMIC_TYPE_OPENSSL );
890+ #endif
849891 if (tmp ) {
850892 XMEMCPY (tmp + ctx -> authBufferLen , in , (size_t )inl );
851893 ctx -> authBufferLen += inl ;
@@ -875,8 +917,19 @@ static int wolfSSL_EVP_CipherUpdate_AriaGCM_AAD(WOLFSSL_EVP_CIPHER_CTX *ctx,
875917 const unsigned char * in , int inl )
876918{
877919 if (in && inl > 0 ) {
878- byte * tmp = (byte * )XREALLOC (ctx -> authIn ,
920+ byte * tmp ;
921+ #ifdef WOLFSSL_NO_REALLOC
922+ tmp = (byte * )XMALLOC ((size_t )ctx -> authInSz + inl , NULL ,
923+ DYNAMIC_TYPE_OPENSSL );
924+ if (tmp != NULL ) {
925+ XMEMCPY (tmp , ctx -> authIn , (size_t )ctx -> authInSz );
926+ XFREE (ctx -> authIn , NULL , DYNAMIC_TYPE_OPENSSL );
927+ ctx -> authIn = NULL ;
928+ }
929+ #else
930+ tmp = (byte * )XREALLOC (ctx -> authIn ,
879931 (size_t )ctx -> authInSz + inl , NULL , DYNAMIC_TYPE_OPENSSL );
932+ #endif
880933 if (tmp ) {
881934 ctx -> authIn = tmp ;
882935 XMEMCPY (ctx -> authIn + ctx -> authInSz , in , (size_t )inl );
@@ -905,9 +958,18 @@ static int wolfSSL_EVP_CipherUpdate_AriaGCM(WOLFSSL_EVP_CIPHER_CTX *ctx,
905958 if (ctx -> enc == 0 ) { /* Append extra space for the tag */
906959 size = WC_ARIA_GCM_GET_CIPHERTEXT_SIZE (size );
907960 }
908- tmp = (byte * )XREALLOC (ctx -> authBuffer ,
909- (size_t )size , NULL ,
910- DYNAMIC_TYPE_OPENSSL );
961+ #ifdef WOLFSSL_NO_REALLOC
962+ tmp = (byte * )XMALLOC ((size_t )size , NULL ,
963+ DYNAMIC_TYPE_OPENSSL );
964+ if (tmp != NULL ) {
965+ XMEMCPY (tmp , ctx -> authBuffer , (size_t )ctx -> authBufferLen );
966+ XFREE (ctx -> authBuffer , NULL , DYNAMIC_TYPE_OPENSSL );
967+ ctx -> authBuffer = NULL ;
968+ }
969+ #else
970+ tmp = (byte * )XREALLOC (ctx -> authBuffer , (size_t )size , NULL ,
971+ DYNAMIC_TYPE_OPENSSL );
972+ #endif
911973 if (tmp ) {
912974 XMEMCPY (tmp + ctx -> authBufferLen , in , (size_t )inl );
913975 ctx -> authBufferLen += inl ;
@@ -2693,9 +2755,19 @@ int wolfSSL_EVP_PKEY_CTX_add1_hkdf_info(WOLFSSL_EVP_PKEY_CTX* ctx,
26932755 if (ret == WOLFSSL_SUCCESS && info != NULL && infoSz > 0 ) {
26942756 unsigned char * p ;
26952757 /* If there's already info in the buffer, append. */
2758+ #ifdef WOLFSSL_NO_REALLOC
2759+ p = (byte * )XMALLOC ((size_t )(ctx -> pkey -> hkdfInfoSz + (word32 )infoSz ), NULL ,
2760+ DYNAMIC_TYPE_INFO );
2761+ if (p != NULL ) {
2762+ XMEMCPY (p , ctx -> pkey -> hkdfInfo , (size_t )ctx -> pkey -> hkdfInfoSz );
2763+ XFREE (ctx -> pkey -> hkdfInfo , NULL , DYNAMIC_TYPE_INFO );
2764+ ctx -> pkey -> hkdfInfo = NULL ;
2765+ }
2766+ #else
26962767 p = (byte * )XREALLOC (ctx -> pkey -> hkdfInfo ,
26972768 (size_t )(ctx -> pkey -> hkdfInfoSz + (word32 )infoSz ), NULL ,
26982769 DYNAMIC_TYPE_INFO );
2770+ #endif
26992771 if (p == NULL ) {
27002772 WOLFSSL_MSG ("Failed to reallocate larger HKDF info buffer." );
27012773 ret = WOLFSSL_FAILURE ;
@@ -9128,8 +9200,17 @@ static int ECC_populate_EVP_PKEY(EVP_PKEY* pkey, WOLFSSL_EC_KEY *key)
91289200 }
91299201 else if (ecc -> type == ECC_PUBLICKEY ) {
91309202 if ((derSz = wc_EccPublicKeyDerSize (ecc , 1 )) > 0 ) {
9131- derBuf = (byte * )XREALLOC (pkey -> pkey .ptr , (size_t )derSz , NULL ,
9203+ #ifdef WOLFSSL_NO_REALLOC
9204+ derBuf = (byte * )XMALLOC ((size_t )derSz , pkey -> heap , DYNAMIC_TYPE_OPENSSL );
9205+ if (derBuf != NULL ) {
9206+ XMEMCPY (derBuf , pkey -> pkey .ptr , (size_t )pkey -> pkey_sz );
9207+ XFREE (pkey -> pkey .ptr , pkey -> heap , DYNAMIC_TYPE_OPENSSL );
9208+ pkey -> pkey .ptr = NULL ;
9209+ }
9210+ #else
9211+ derBuf = (byte * )XREALLOC (pkey -> pkey .ptr , (size_t )derSz , pkey -> heap ,
91329212 DYNAMIC_TYPE_OPENSSL );
9213+ #endif
91339214 if (derBuf != NULL ) {
91349215 pkey -> pkey .ptr = (char * )derBuf ;
91359216 if ((derSz = wc_EccPublicKeyToDer (ecc , derBuf , (word32 )derSz ,
0 commit comments