Skip to content

Commit

Permalink
Merge bitcoin#818: Add static assertion that uint32_t is unsigned int…
Browse files Browse the repository at this point in the history
… or wider

c0041b5 Add static assertion that uint32_t is unsigned int or wider (Tim Ruffing)

Pull request description:

  Solves one item in bitcoin#792 .

ACKs for top commit:
  sipa:
    utACK c0041b5
  elichai:
    ACK c0041b5

Tree-SHA512: 9f700e89be39e15983260da94642593d16b9c437171e10377837ac73731ca7ba5dd7e328b3d93d0a24d143fb9e73abd11c578f6b58e2f94c82b783e977173b0c
  • Loading branch information
real-or-random committed Sep 26, 2020
2 parents 5006895 + c0041b5 commit bb1f542
Showing 1 changed file with 7 additions and 1 deletion.
8 changes: 7 additions & 1 deletion src/assumptions.h
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,8 @@
#ifndef SECP256K1_ASSUMPTIONS_H
#define SECP256K1_ASSUMPTIONS_H

#include <limits.h>

#include "util.h"

/* This library, like most software, relies on a number of compiler implementation defined (but not undefined)
Expand All @@ -19,7 +21,11 @@ struct secp256k1_assumption_checker {
allowed. */
int dummy_array[(
/* Bytes are 8 bits. */
CHAR_BIT == 8 &&
(CHAR_BIT == 8) &&

/* No integer promotion for uint32_t. This ensures that we can multiply uintXX_t values where XX >= 32
without signed overflow, which would be undefined behaviour. */
(UINT_MAX <= UINT32_MAX) &&

/* Conversions from unsigned to signed outside of the bounds of the signed type are
implementation-defined. Verify that they function as reinterpreting the lower
Expand Down

0 comments on commit bb1f542

Please sign in to comment.