Skip to content

Commit 27aed8f

Browse files
committed
Merge branch 'PHP-8.0' into PHP-8.1
2 parents 6be8efd + beff427 commit 27aed8f

File tree

2 files changed

+16
-12
lines changed

2 files changed

+16
-12
lines changed

ext/hash/sha3/generic32lc/KeccakSponge.inc

+8-6
Original file line numberDiff line numberDiff line change
@@ -160,7 +160,7 @@ int SpongeAbsorb(SpongeInstance *instance, const unsigned char *data, size_t dat
160160
i = 0;
161161
curData = data;
162162
while(i < dataByteLen) {
163-
if ((instance->byteIOIndex == 0) && (dataByteLen >= (i + rateInBytes))) {
163+
if ((instance->byteIOIndex == 0) && (dataByteLen-i >= rateInBytes)) {
164164
#ifdef SnP_FastLoop_Absorb
165165
/* processing full blocks first */
166166
if ((rateInBytes % (SnP_width/200)) == 0) {
@@ -186,9 +186,10 @@ int SpongeAbsorb(SpongeInstance *instance, const unsigned char *data, size_t dat
186186
}
187187
else {
188188
/* normal lane: using the message queue */
189-
partialBlock = (unsigned int)(dataByteLen - i);
190-
if (partialBlock+instance->byteIOIndex > rateInBytes)
189+
if (dataByteLen-i > rateInBytes-instance->byteIOIndex)
191190
partialBlock = rateInBytes-instance->byteIOIndex;
191+
else
192+
partialBlock = (unsigned int)(dataByteLen - i);
192193
#ifdef KeccakReference
193194
displayBytes(1, "Block to be absorbed (part)", curData, partialBlock);
194195
#endif
@@ -263,7 +264,7 @@ int SpongeSqueeze(SpongeInstance *instance, unsigned char *data, size_t dataByte
263264
i = 0;
264265
curData = data;
265266
while(i < dataByteLen) {
266-
if ((instance->byteIOIndex == rateInBytes) && (dataByteLen >= (i + rateInBytes))) {
267+
if ((instance->byteIOIndex == rateInBytes) && (dataByteLen-i >= rateInBytes)) {
267268
for(j=dataByteLen-i; j>=rateInBytes; j-=rateInBytes) {
268269
SnP_Permute(instance->state);
269270
SnP_ExtractBytes(instance->state, curData, 0, rateInBytes);
@@ -280,9 +281,10 @@ int SpongeSqueeze(SpongeInstance *instance, unsigned char *data, size_t dataByte
280281
SnP_Permute(instance->state);
281282
instance->byteIOIndex = 0;
282283
}
283-
partialBlock = (unsigned int)(dataByteLen - i);
284-
if (partialBlock+instance->byteIOIndex > rateInBytes)
284+
if (dataByteLen-i > rateInBytes-instance->byteIOIndex)
285285
partialBlock = rateInBytes-instance->byteIOIndex;
286+
else
287+
partialBlock = (unsigned int)(dataByteLen - i);
286288
i += partialBlock;
287289

288290
SnP_ExtractBytes(instance->state, curData, instance->byteIOIndex, partialBlock);

ext/hash/sha3/generic64lc/KeccakSponge.inc

+8-6
Original file line numberDiff line numberDiff line change
@@ -160,7 +160,7 @@ int SpongeAbsorb(SpongeInstance *instance, const unsigned char *data, size_t dat
160160
i = 0;
161161
curData = data;
162162
while(i < dataByteLen) {
163-
if ((instance->byteIOIndex == 0) && (dataByteLen >= (i + rateInBytes))) {
163+
if ((instance->byteIOIndex == 0) && (dataByteLen-i >= rateInBytes)) {
164164
#ifdef SnP_FastLoop_Absorb
165165
/* processing full blocks first */
166166
if ((rateInBytes % (SnP_width/200)) == 0) {
@@ -186,9 +186,10 @@ int SpongeAbsorb(SpongeInstance *instance, const unsigned char *data, size_t dat
186186
}
187187
else {
188188
/* normal lane: using the message queue */
189-
partialBlock = (unsigned int)(dataByteLen - i);
190-
if (partialBlock+instance->byteIOIndex > rateInBytes)
189+
if (dataByteLen-i > rateInBytes-instance->byteIOIndex)
191190
partialBlock = rateInBytes-instance->byteIOIndex;
191+
else
192+
partialBlock = (unsigned int)(dataByteLen - i);
192193
#ifdef KeccakReference
193194
displayBytes(1, "Block to be absorbed (part)", curData, partialBlock);
194195
#endif
@@ -263,7 +264,7 @@ int SpongeSqueeze(SpongeInstance *instance, unsigned char *data, size_t dataByte
263264
i = 0;
264265
curData = data;
265266
while(i < dataByteLen) {
266-
if ((instance->byteIOIndex == rateInBytes) && (dataByteLen >= (i + rateInBytes))) {
267+
if ((instance->byteIOIndex == rateInBytes) && (dataByteLen-i >= rateInBytes)) {
267268
for(j=dataByteLen-i; j>=rateInBytes; j-=rateInBytes) {
268269
SnP_Permute(instance->state);
269270
SnP_ExtractBytes(instance->state, curData, 0, rateInBytes);
@@ -280,9 +281,10 @@ int SpongeSqueeze(SpongeInstance *instance, unsigned char *data, size_t dataByte
280281
SnP_Permute(instance->state);
281282
instance->byteIOIndex = 0;
282283
}
283-
partialBlock = (unsigned int)(dataByteLen - i);
284-
if (partialBlock+instance->byteIOIndex > rateInBytes)
284+
if (dataByteLen-i > rateInBytes-instance->byteIOIndex)
285285
partialBlock = rateInBytes-instance->byteIOIndex;
286+
else
287+
partialBlock = (unsigned int)(dataByteLen - i);
286288
i += partialBlock;
287289

288290
SnP_ExtractBytes(instance->state, curData, instance->byteIOIndex, partialBlock);

0 commit comments

Comments
 (0)