GitHub

@@ -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;

306307307308

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

Read the original on github.com ↗