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

``

`-

`

6

5

` * by Jean-Philippe Aumasson and Daniel J. Berstein.

`

7

``

`-

`

``

6

`+

`

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

``

`-

`

``

14

`+

`

``

15

`+

`

``

16

`+

`

``

17

`+

`

``

18

`+

`

``

19

`+

`

``

20

`+

`

``

21

`+

`

``

22

`+

`

``

23

`+

`

``

24

`+

`

``

25

`+

`

16

26

` * - Clarify license note in the header

`

17

27

` * - Address C89 issues:

`

18

28

` * - Stop using inline keyword (and let compiler decide)

`

19

``

`-

`

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

`+

`

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

`+

`

``

102

`+

`

``

103

`+

`

``

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");

`