Commit 968c31bd authored by Andy Polyakov's avatar Andy Polyakov
Browse files

sha256_block advances the input pointer double as fast sometimes. Fix the

bug and test that it's actually gone.
PR: 950
parent c7439661
Loading
Loading
Loading
Loading
+4 −2
Original line number Diff line number Diff line
@@ -179,6 +179,8 @@ static void sha256_block (SHA256_CTX *ctx, const void *in, size_t num, int host)
			h = g;	g = f;	f = e;	e = d + T1;
			d = c;	c = b;	b = a;	a = T1 + T2;
			}

		data += SHA256_CBLOCK;
		}
	else
		{
@@ -209,7 +211,6 @@ static void sha256_block (SHA256_CTX *ctx, const void *in, size_t num, int host)
	ctx->h[0] += a;	ctx->h[1] += b;	ctx->h[2] += c;	ctx->h[3] += d;
	ctx->h[4] += e;	ctx->h[5] += f;	ctx->h[6] += g;	ctx->h[7] += h;

			data += SHA256_CBLOCK;
			}
}

@@ -258,6 +259,8 @@ static void sha256_block (SHA256_CTX *ctx, const void *in, size_t num, int host)
		T1 = X[13] = W[13];	ROUND_00_15(13,d,e,f,g,h,a,b,c);
		T1 = X[14] = W[14];	ROUND_00_15(14,c,d,e,f,g,h,a,b);
		T1 = X[15] = W[15];	ROUND_00_15(15,b,c,d,e,f,g,h,a);

		data += SHA256_CBLOCK;
		}
	else
		{
@@ -296,7 +299,6 @@ static void sha256_block (SHA256_CTX *ctx, const void *in, size_t num, int host)
	ctx->h[0] += a;	ctx->h[1] += b;	ctx->h[2] += c;	ctx->h[3] += d;
	ctx->h[4] += e;	ctx->h[5] += f;	ctx->h[6] += g;	ctx->h[7] += h;

			data += SHA256_CBLOCK;
			}
	}

+5 −2
Original line number Diff line number Diff line
@@ -74,10 +74,13 @@ int main ()

    EVP_MD_CTX_init (&evp);
    EVP_DigestInit_ex (&evp,EVP_sha256(),NULL);
    for (i=0;i<1000000;i+=64)
    for (i=0;i<1000000;i+=160)
	EVP_DigestUpdate (&evp,	"aaaaaaaa""aaaaaaaa""aaaaaaaa""aaaaaaaa"
				"aaaaaaaa""aaaaaaaa""aaaaaaaa""aaaaaaaa"
				"aaaaaaaa""aaaaaaaa""aaaaaaaa""aaaaaaaa"
				"aaaaaaaa""aaaaaaaa""aaaaaaaa""aaaaaaaa"
				"aaaaaaaa""aaaaaaaa""aaaaaaaa""aaaaaaaa",
				(1000000-i)<64?1000000-i:64);
				(1000000-i)<160?1000000-i:160);
    EVP_DigestFinal_ex (&evp,md,NULL);
    EVP_MD_CTX_cleanup (&evp);