bpo-30947: Update libexpat from 2.2.1 to 2.2.3 (#3106) · python/cpython@93d0cb5 (original) (raw)
`@@ -2,24 +2,34 @@
`
2
2
` * siphash.h - SipHash-2-4 in a single header file
`
3
3
` * --------------------------------------------------------------------------
`
4
4
` * Derived by William Ahern from the reference implementation[1] published[2]
`
5
``
`-
- by Jean-Philippe Aumasson and Daniel J. Berstein. Licensed in kind.
`
6
5
` * by Jean-Philippe Aumasson and Daniel J. Berstein.
`
7
``
`-
- Minimal changes by Sebastian Pipping on top, details below.
`
``
6
`+
- Minimal changes by Sebastian Pipping and Victor Stinner on top, see below.
`
8
7
` * Licensed under the CC0 Public Domain Dedication license.
`
9
8
` *
`
10
9
` * 1. https://www.131002.net/siphash/siphash24.c
`
11
10
` * 2. https://www.131002.net/siphash/
`
12
11
` * --------------------------------------------------------------------------
`
13
12
` * HISTORY:
`
14
13
` *
`
15
``
`-
- 2017-06-10 (Sebastian Pipping)
`
``
14
`+
- 2017-07-25 (Vadim Zeitlin)
`
``
15
`+
- Fix use of SIPHASH_MAIN macro
`
``
16
`+
`
``
17
`+
- 2017-07-05 (Sebastian Pipping)
`
``
18
`+
- Use _SIP_ULL macro to not require a C++11 compiler if compiled as C++
`
``
19
`+
- Add const qualifiers at two places
`
``
20
`+
- Ensure <=80 characters line length (assuming tab width 4)
`
``
21
`+
`
``
22
`+
- 2017-06-23 (Victor Stinner)
`
``
23
`+
- Address Win64 compile warnings
`
``
24
`+
`
``
25
`+
- 2017-06-18 (Sebastian Pipping)
`
16
26
` * - Clarify license note in the header
`
17
27
` * - Address C89 issues:
`
18
28
` * - Stop using inline keyword (and let compiler decide)
`
19
``
`-
- Turn integer suffix ULL to UL
`
20
29
` * - Replace _Bool by int
`
21
30
` * - Turn macro siphash24 into a function
`
22
31
` * - Address invalid conversion (void pointer) by explicit cast
`
``
32
`+
- Address lack of stdint.h for Visual Studio 2003 to 2008
`
23
33
` * - Always expose sip24_valid (for self-tests)
`
24
34
` *
`
25
35
` * 2012-11-04 - Born. (William Ahern)
`
76
86
`#define SIPHASH_H
`
77
87
``
78
88
`#include <stddef.h> /* size_t */
`
79
``
`-
#include <stdint.h> /* uint64_t uint32_t uint8_t */
`
``
89
+
``
90
`+
#if defined(_WIN32) && defined(_MSC_VER) && (_MSC_VER < 1600)
`
``
91
`+
/* For vs2003/7.1 up to vs2008/9.0; _MSC_VER 1600 is vs2010/10.0 */
`
``
92
`+
typedef unsigned __int8 uint8_t;
`
``
93
`+
typedef unsigned __int32 uint32_t;
`
``
94
`+
typedef unsigned __int64 uint64_t;
`
``
95
`+
#else
`
``
96
`+
#include <stdint.h> /* uint64_t uint32_t uint8_t */
`
``
97
`+
#endif
`
``
98
+
``
99
+
``
100
`+
/*
`
``
101
`+
- Workaround to not require a C++11 compiler for using ULL suffix
`
``
102
`+
- if this code is included and compiled as C++; related GCC warning is:
`
``
103
`+
- warning: use of C++11 long long integer constant [-Wlong-long]
`
``
104
`+
*/
`
``
105
`+
#define _SIP_ULL(high, low) (((uint64_t)high << 32) | low)
`
80
106
``
81
107
``
82
108
`#define SIP_ROTL(x, b) (uint64_t)(((x) << (b)) | ( (x) >> (64 - (b))))
`
`@@ -158,11 +184,12 @@ static void sip_round(struct siphash *H, const int rounds) {
`
158
184
`} /* sip_round() */
`
159
185
``
160
186
``
161
``
`-
static struct siphash *sip24_init(struct siphash *H, const struct sipkey *key) {
`
162
``
`-
H->v0 = 0x736f6d6570736575UL ^ key->k[0];
`
163
``
`-
H->v1 = 0x646f72616e646f6dUL ^ key->k[1];
`
164
``
`-
H->v2 = 0x6c7967656e657261UL ^ key->k[0];
`
165
``
`-
H->v3 = 0x7465646279746573UL ^ key->k[1];
`
``
187
`+
static struct siphash *sip24_init(struct siphash *H,
`
``
188
`+
const struct sipkey *key) {
`
``
189
`+
H->v0 = _SIP_ULL(0x736f6d65U, 0x70736575U) ^ key->k[0];
`
``
190
`+
H->v1 = _SIP_ULL(0x646f7261U, 0x6e646f6dU) ^ key->k[1];
`
``
191
`+
H->v2 = _SIP_ULL(0x6c796765U, 0x6e657261U) ^ key->k[0];
`
``
192
`+
H->v3 = _SIP_ULL(0x74656462U, 0x79746573U) ^ key->k[1];
`
166
193
``
167
194
`H->p = H->buf;
`
168
195
`H->c = 0;
`
`@@ -173,7 +200,8 @@ static struct siphash *sip24_init(struct siphash *H, const struct sipkey *key) {
`
173
200
``
174
201
`#define sip_endof(a) (&(a)[sizeof (a) / sizeof *(a)])
`
175
202
``
176
``
`-
static struct siphash *sip24_update(struct siphash *H, const void *src, size_t len) {
`
``
203
`+
static struct siphash *sip24_update(struct siphash *H, const void *src,
`
``
204
`+
size_t len) {
`
177
205
`const unsigned char *p = (const unsigned char *)src, *pe = p + len;
`
178
206
`uint64_t m;
`
179
207
``
`@@ -198,7 +226,7 @@ static struct siphash *sip24_update(struct siphash *H, const void *src, size_t l
`
198
226
``
199
227
``
200
228
`static uint64_t sip24_final(struct siphash *H) {
`
201
``
`-
char left = (char)(H->p - H->buf);
`
``
229
`+
const char left = (char)(H->p - H->buf);
`
202
230
`uint64_t b = (H->c + left) << 56;
`
203
231
``
204
232
`switch (left) {
`
`@@ -222,7 +250,8 @@ static uint64_t sip24_final(struct siphash *H) {
`
222
250
`} /* sip24_final() */
`
223
251
``
224
252
``
225
``
`-
static uint64_t siphash24(const void *src, size_t len, const struct sipkey *key) {
`
``
253
`+
static uint64_t siphash24(const void *src, size_t len,
`
``
254
`+
const struct sipkey *key) {
`
226
255
`struct siphash state = SIPHASH_INITIALIZER;
`
227
256
`return sip24_final(sip24_update(sip24_init(&state, key), src, len));
`
228
257
`} /* siphash24() */
`
`@@ -310,7 +339,8 @@ static int sip24_valid(void) {
`
310
339
`struct sipkey k;
`
311
340
`size_t i;
`
312
341
``
313
``
`-
sip_tokey(&k, "\000\001\002\003\004\005\006\007\010\011\012\013\014\015\016\017");
`
``
342
`+
sip_tokey(&k, "\000\001\002\003\004\005\006\007\010\011"
`
``
343
`+
"\012\013\014\015\016\017");
`
314
344
``
315
345
`for (i = 0; i < sizeof in; ++i) {
`
316
346
`in[i] = (unsigned char)i;
`
`@@ -323,12 +353,12 @@ static int sip24_valid(void) {
`
323
353
`} /* sip24_valid() */
`
324
354
``
325
355
``
326
``
`-
#if SIPHASH_MAIN
`
``
356
`+
#ifdef SIPHASH_MAIN
`
327
357
``
328
358
`#include <stdio.h>
`
329
359
``
330
360
`int main(void) {
`
331
``
`-
int ok = sip24_valid();
`
``
361
`+
const int ok = sip24_valid();
`
332
362
``
333
363
`if (ok)
`
334
364
`puts("OK");
`