@@ -171,7 +171,7 @@ int SpongeAbsorb(SpongeInstance *instance, const unsigned char *data, size_t dat
171171 i = 0 ;
172172 curData = data;
173173 while (i < dataByteLen) {
174- if ((instance->byteIOIndex == 0 ) && (dataByteLen >= (i + rateInBytes) )) {
174+ if ((instance->byteIOIndex == 0 ) && (dataByteLen-i >= rateInBytes)) {
175175#ifdef SnP_FastLoop_Absorb
176176 /* processing full blocks first */
177177
@@ -199,10 +199,10 @@ int SpongeAbsorb(SpongeInstance *instance, const unsigned char *data, size_t dat
199199 }
200200 else {
201201 /* normal lane: using the message queue */
202-
203- partialBlock = (unsigned int )(dataByteLen - i);
204- if (partialBlock+instance->byteIOIndex > rateInBytes)
202+ if (dataByteLen-i > rateInBytes-instance->byteIOIndex )
205203 partialBlock = rateInBytes-instance->byteIOIndex ;
204+ else
205+ partialBlock = (unsigned int )(dataByteLen - i);
206206 #ifdef KeccakReference
207207 displayBytes (1 , " Block to be absorbed (part)" , curData, partialBlock);
208208 #endif
@@ -281,7 +281,7 @@ int SpongeSqueeze(SpongeInstance *instance, unsigned char *data, size_t dataByte
281281 i = 0 ;
282282 curData = data;
283283 while (i < dataByteLen) {
284- if ((instance->byteIOIndex == rateInBytes) && (dataByteLen >= (i + rateInBytes) )) {
284+ if ((instance->byteIOIndex == rateInBytes) && (dataByteLen-i >= rateInBytes)) {
285285 for (j=dataByteLen-i; j>=rateInBytes; j-=rateInBytes) {
286286 SnP_Permute (instance->state );
287287 SnP_ExtractBytes (instance->state , curData, 0 , rateInBytes);
@@ -299,9 +299,10 @@ int SpongeSqueeze(SpongeInstance *instance, unsigned char *data, size_t dataByte
299299 SnP_Permute (instance->state );
300300 instance->byteIOIndex = 0 ;
301301 }
302- partialBlock = (unsigned int )(dataByteLen - i);
303- if (partialBlock+instance->byteIOIndex > rateInBytes)
302+ if (dataByteLen-i > rateInBytes-instance->byteIOIndex )
304303 partialBlock = rateInBytes-instance->byteIOIndex ;
304+ else
305+ partialBlock = (unsigned int )(dataByteLen - i);
305306 i += partialBlock;
306307
307308 SnP_ExtractBytes (instance->state , curData, instance->byteIOIndex , partialBlock);
0 commit comments