@@ -1682,6 +1682,9 @@ int wolfTPM2_StartSession(WOLFTPM2_DEV* dev, WOLFTPM2_SESSION* session,
16821682 /* key is bindAuthValue || salt */
16831683 XMEMSET (& keyIn , 0 , sizeof (keyIn ));
16841684 if (bind && bind -> auth .size > 0 ) {
1685+ if (bind -> auth .size > (UINT16 )sizeof (bind -> auth .buffer )) {
1686+ return BUFFER_E ;
1687+ }
16851688 if ((keyIn .size + bind -> auth .size ) > (UINT16 )sizeof (keyIn .buffer )) {
16861689 return BUFFER_E ;
16871690 }
@@ -1690,6 +1693,9 @@ int wolfTPM2_StartSession(WOLFTPM2_DEV* dev, WOLFTPM2_SESSION* session,
16901693 keyIn .size += bind -> auth .size ;
16911694 }
16921695 if (session -> salt .size > 0 ) {
1696+ if (session -> salt .size > (UINT16 )sizeof (session -> salt .buffer )) {
1697+ return BUFFER_E ;
1698+ }
16931699 if ((keyIn .size + session -> salt .size ) > (UINT16 )sizeof (keyIn .buffer )) {
16941700 return BUFFER_E ;
16951701 }
@@ -3690,12 +3696,14 @@ int wolfTPM2_EccKey_TpmToWolf(WOLFTPM2_DEV* dev, WOLFTPM2_KEY* tpmKey,
36903696
36913697 /* load public key */
36923698 qxSz = tpmKey -> pub .publicArea .unique .ecc .x .size ;
3693- if (qxSz > sizeof (qx )) {
3699+ if (qxSz > sizeof (qx ) ||
3700+ qxSz > sizeof (tpmKey -> pub .publicArea .unique .ecc .x .buffer )) {
36943701 return BUFFER_E ;
36953702 }
36963703 XMEMCPY (qx , tpmKey -> pub .publicArea .unique .ecc .x .buffer , qxSz );
36973704 qySz = tpmKey -> pub .publicArea .unique .ecc .y .size ;
3698- if (qySz > sizeof (qy )) {
3705+ if (qySz > sizeof (qy ) ||
3706+ qySz > sizeof (tpmKey -> pub .publicArea .unique .ecc .y .buffer )) {
36993707 return BUFFER_E ;
37003708 }
37013709 XMEMCPY (qy , tpmKey -> pub .publicArea .unique .ecc .y .buffer , qySz );
0 commit comments