8000 fix WASM compilation · python/cpython@4b4b66c · GitHub
[go: up one dir, main page]

Skip to content

Commit 4b4b66c

Browse files
committed
fix WASM compilation
1 parent 17365bd commit 4b4b66c

File tree

1 file changed

+26
-25
lines changed

1 file changed

+26
-25
lines changed

Modules/blake2module.c

Lines changed: 26 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -482,52 +482,53 @@ py_blake2_validate_params(Blake2Object *self,
482482
goto error;
483483
}
484484

485-
#define CHECK_SIZE(NAME, VALUE, MAX, EXC_TYPE) \
485+
#define CHECK_LENGTH(NAME, VALUE, MAX) \
486486
do { \
487487
if ((size_t)(VALUE) > (size_t)(MAX)) { \
488-
PyErr_Format(EXC_TYPE, \
489-
"maximum %s is %zu bytes, got %zd", \
488+
PyErr_Format(PyExc_ValueError, \
489+
"maximum %s length is %zu bytes, got %zd", \
490490
(NAME), (size_t)(MAX), (Py_ssize_t)(VALUE)); \
491491
goto error; \
492492
} \
493493
} while (0)
494-
#define CHECK_SIZE_VE(N, V, M) CHECK_SIZE(N, V, M, PyExc_ValueError)
495-
#define CHECK_SIZE_OE(N, V, M) CHECK_SIZE(N, V, M, PyExc_OverflowError)
496-
497-
#define CHECK_TREE(NAME, VALUE, MIN, MAX) \
498-
do { \
499-
if ((VALUE) < (MIN) || (size_t)(VALUE) > (size_t)(MAX)) { \
500-
PyErr_Format(PyExc_ValueError, \
501-
"'%s' must be between %zu and %zu", \
502-
(NAME), (size_t)(MIN), (size_t)(MAX)); \
503-
goto error; \
504-
} \
505-
} while (0)
506-
507494
/* Validate key parameter. */
508495
if (key->obj && key->len) {
509-
CHECK_SIZE_VE("key length", key->len, MAX_KEY_BYTES(self));
496+
CHECK_LENGTH("key", key->len, MAX_KEY_BYTES(self));
510497
}
511498
/* Validate salt parameter. */
512499
if (salt->obj && salt->len) {
513-
CHECK_SIZE_VE("salt length", salt->len, MAX_SALT_LENGTH(self));
500+
CHECK_LENGTH("salt", salt->len, MAX_SALT_LENGTH(self));
514501
}
515502
/* Validate personalization parameter. */
516503
if (person->obj && person->len) {
517-
CHECK_SIZE_VE("person length", person->len, MAX_PERSONAL_BYTES(self));
504+
CHECK_LENGTH("person", person->len, MAX_PERSONAL_BYTES(self));
518505
}
506+
#undef CHECK_LENGTH
507+
#define CHECK_TREE(NAME, VALUE, MIN, MAX) \
508+
do { \
509+
if ((VALUE) < (MIN) || (size_t)(VALUE) > (size_t)(MAX)) { \
510+
PyErr_Format(PyExc_ValueError, \
511+
"'%s' must be between %zu and %zu", \
512+
(NAME), (size_t)(MIN), (size_t)(MAX)); \
513+
goto error; \
514+
} \
515+
} while (0)
519516
/* Validate tree parameters. */
520517
CHECK_TREE("fanout", fanout, 0, 255);
521518
CHECK_TREE("depth", depth, 1, 255);
522-
CHECK_SIZE_OE("leaf_size", leaf_size, 0xFFFFFFFFU);
523-
if (is_blake2s(self->impl)) {
524-
/* maximum: 2**48 - 1 */
525-
CHECK_SIZE_OE("node_offset", node_offset, 0xFFFFFFFFFFFFULL);
526-
}
527519
CHECK_TREE("node_depth", node_depth, 0, 255);
528520
CHECK_TREE("inner_size", inner_size, 0, MAX_OUT_BYTES(self));
529521
#undef CHECK_TREE
530-
#undef CHECK_SIZE
522+
if (leaf_size > 0xFFFFFFFFU) {
523+
/* maximum: 2**32 - 1 */
524+
PyErr_SetString(PyExc_OverflowError, "'leaf_size' is too large");
525+
goto error;
526+
}
527+
if (is_blake2s(self->impl) && node_offset > 0xFFFFFFFFFFFFULL) {
528+
/* maximum: 2**48 - 1 */
529+
PyErr_SetString(PyExc_OverflowError, "'node_offset' is too large");
530+
goto error;
531+
}
531532
return 0;
532533
error:
533534
return -1;

0 commit comments

Comments
 (0)
0