Skip to content

Commit 8616f78

Browse files
committed
Address PR comments
1 parent e852e3f commit 8616f78

1 file changed

Lines changed: 24 additions & 12 deletions

File tree

src/wh_client_she.c

Lines changed: 24 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -714,16 +714,19 @@ int wh_Client_SheEncEcbResponse(whClientContext* c, uint8_t* out, uint32_t sz)
714714
if (ret == 0) {
715715
if (group != WH_MESSAGE_GROUP_SHE ||
716716
action != WH_SHE_ENC_ECB ||
717-
dataSz < sizeof(*resp) ||
718-
dataSz < sizeof(*resp) + resp->sz) {
717+
dataSz < sizeof(*resp)) {
719718
ret = WH_ERROR_ABORTED;
720719
}
721720
}
722721
if (ret == 0) {
723722
ret = resp->rc;
724723
}
724+
/* payload is only present on success, so validate its size before copy */
725725
if (ret == 0) {
726-
if (sz < resp->sz) {
726+
if (dataSz < sizeof(*resp) + resp->sz) {
727+
ret = WH_ERROR_ABORTED;
728+
}
729+
else if (sz < resp->sz) {
727730
ret = WH_ERROR_BUFFER_SIZE;
728731
}
729732
else {
@@ -794,16 +797,19 @@ int wh_Client_SheEncCbcResponse(whClientContext* c, uint8_t* out, uint32_t sz)
794797
if (ret == 0) {
795798
if (group != WH_MESSAGE_GROUP_SHE ||
796799
action != WH_SHE_ENC_CBC ||
797-
dataSz < sizeof(*resp) ||
798-
dataSz < sizeof(*resp) + resp->sz) {
800+
dataSz < sizeof(*resp)) {
799801
ret = WH_ERROR_ABORTED;
800802
}
801803
}
802804
if (ret == 0) {
803805
ret = resp->rc;
804806
}
807+
/* payload is only present on success, so validate its size before copy */
805808
if (ret == 0) {
806-
if (sz < resp->sz) {
809+
if (dataSz < sizeof(*resp) + resp->sz) {
810+
ret = WH_ERROR_ABORTED;
811+
}
812+
else if (sz < resp->sz) {
807813
ret = WH_ERROR_BUFFER_SIZE;
808814
}
809815
else {
@@ -870,16 +876,19 @@ int wh_Client_SheDecEcbResponse(whClientContext* c, uint8_t* out, uint32_t sz)
870876
if (ret == 0) {
871877
if (group != WH_MESSAGE_GROUP_SHE ||
872878
action != WH_SHE_DEC_ECB ||
873-
dataSz < sizeof(*resp) ||
874-
dataSz < sizeof(*resp) + resp->sz) {
879+
dataSz < sizeof(*resp)) {
875880
ret = WH_ERROR_ABORTED;
876881
}
877882
}
878883
if (ret == 0) {
879884
ret = resp->rc;
880885
}
886+
/* payload is only present on success, so validate its size before copy */
881887
if (ret == 0) {
882-
if (sz < resp->sz) {
888+
if (dataSz < sizeof(*resp) + resp->sz) {
889+
ret = WH_ERROR_ABORTED;
890+
}
891+
else if (sz < resp->sz) {
883892
ret = WH_ERROR_BUFFER_SIZE;
884893
}
885894
else {
@@ -950,16 +959,19 @@ int wh_Client_SheDecCbcResponse(whClientContext* c, uint8_t* out, uint32_t sz)
950959
if (ret == 0) {
951960
if (group != WH_MESSAGE_GROUP_SHE ||
952961
action != WH_SHE_DEC_CBC ||
953-
dataSz < sizeof(*resp) ||
954-
dataSz < sizeof(*resp) + resp->sz) {
962+
dataSz < sizeof(*resp)) {
955963
ret = WH_ERROR_ABORTED;
956964
}
957965
}
958966
if (ret == 0) {
959967
ret = resp->rc;
960968
}
969+
/* payload is only present on success, so validate its size before copy */
961970
if (ret == 0) {
962-
if (sz < resp->sz) {
971+
if (dataSz < sizeof(*resp) + resp->sz) {
972+
ret = WH_ERROR_ABORTED;
973+
}
974+
else if (sz < resp->sz) {
963975
ret = WH_ERROR_BUFFER_SIZE;
964976
}
965977
else {

0 commit comments

Comments
 (0)