1
0
mirror of https://github.com/postgres/postgres.git synced 2025-07-30 11:03:19 +03:00

Revert error handling improvements for cryptohashes

This reverts commits ab27df2, af8d530 and 3a0cced, that introduced
pg_cryptohash_error().  In order to make the core code able to pass down
the new error types that this introduced, some of the MD5-related
routines had to be reworked, causing an ABI breakage, but we found that
some external extensions rely on them.  Maintaining compatibility
outweights the error report benefits, so just revert the change in v14.

Reported-by: Laurenz Albe
Discussion: https://postgr.es/m/9f0c0a96d28cf14fc87296bbe67061c14eb53ae8.camel@cybertec.at
This commit is contained in:
Michael Paquier
2022-01-14 11:25:39 +09:00
parent 4aee39ddb8
commit ad5b6f248a
19 changed files with 88 additions and 297 deletions

View File

@ -319,17 +319,14 @@ uuid_generate_internal(int v, unsigned char *ns, const char *ptr, int len)
pg_cryptohash_ctx *ctx = pg_cryptohash_create(PG_MD5);
if (pg_cryptohash_init(ctx) < 0)
elog(ERROR, "could not initialize %s context: %s", "MD5",
pg_cryptohash_error(ctx));
elog(ERROR, "could not initialize %s context", "MD5");
if (pg_cryptohash_update(ctx, ns, sizeof(uu)) < 0 ||
pg_cryptohash_update(ctx, (unsigned char *) ptr, len) < 0)
elog(ERROR, "could not update %s context: %s", "MD5",
pg_cryptohash_error(ctx));
elog(ERROR, "could not update %s context", "MD5");
/* we assume sizeof MD5 result is 16, same as UUID size */
if (pg_cryptohash_final(ctx, (unsigned char *) &uu,
sizeof(uu)) < 0)
elog(ERROR, "could not finalize %s context: %s", "MD5",
pg_cryptohash_error(ctx));
elog(ERROR, "could not finalize %s context", "MD5");
pg_cryptohash_free(ctx);
}
else
@ -338,15 +335,12 @@ uuid_generate_internal(int v, unsigned char *ns, const char *ptr, int len)
unsigned char sha1result[SHA1_DIGEST_LENGTH];
if (pg_cryptohash_init(ctx) < 0)
elog(ERROR, "could not initialize %s context: %s", "SHA1",
pg_cryptohash_error(ctx));
elog(ERROR, "could not initialize %s context", "SHA1");
if (pg_cryptohash_update(ctx, ns, sizeof(uu)) < 0 ||
pg_cryptohash_update(ctx, (unsigned char *) ptr, len) < 0)
elog(ERROR, "could not update %s context: %s", "SHA1",
pg_cryptohash_error(ctx));
elog(ERROR, "could not update %s context", "SHA1");
if (pg_cryptohash_final(ctx, sha1result, sizeof(sha1result)) < 0)
elog(ERROR, "could not finalize %s context: %s", "SHA1",
pg_cryptohash_error(ctx));
elog(ERROR, "could not finalize %s context", "SHA1");
pg_cryptohash_free(ctx);
memcpy(&uu, sha1result, sizeof(uu));