Mercurial > hg
annotate mercurial/thirdparty/xdiff/xinclude.h @ 36822:882657a9f768
xdiff: replace {unsigned ,}long with {u,}int64_t
MSVC treats "long" as 4-byte. That could cause overflows since the xdiff
code uses "long" in places where "size_t" or "ssize_t" should be used.
Let's use explicit 8 byte integers to avoid
FWIW git avoids that overflow by limiting diff size to 1GB [1]. After
examining the code, I think the remaining risk (the use of "int") is low
since "int" is only used for return values and hash table size. Although a
wrong hash table size would not affect the correctness of the code, but that
could make the code extremely slow. The next patch will change hash table
size to 8-byte integer so the 1GB limit is unlikely needed.
This patch was done by using `sed`.
[1]: https://github.com/git/git/commit/dcd1742e56ebb944c4ff62346da4548e1e3be67
Differential Revision: https://phab.mercurial-scm.org/D2762
author | Jun Wu <quark@fb.com> |
---|---|
date | Fri, 09 Mar 2018 14:24:27 -0800 |
parents | 90f8fe72446c |
children | d255744de97a |
rev | line source |
---|---|
36671 | 1 /* |
2 * LibXDiff by Davide Libenzi ( File Differential Library ) | |
3 * Copyright (C) 2003 Davide Libenzi | |
4 * | |
5 * This library is free software; you can redistribute it and/or | |
6 * modify it under the terms of the GNU Lesser General Public | |
7 * License as published by the Free Software Foundation; either | |
8 * version 2.1 of the License, or (at your option) any later version. | |
9 * | |
10 * This library is distributed in the hope that it will be useful, | |
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of | |
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |
13 * Lesser General Public License for more details. | |
14 * | |
15 * You should have received a copy of the GNU Lesser General Public | |
16 * License along with this library; if not, see | |
17 * <http://www.gnu.org/licenses/>. | |
18 * | |
19 * Davide Libenzi <davidel@xmailserver.org> | |
20 * | |
21 */ | |
22 | |
23 #if !defined(XINCLUDE_H) | |
24 #define XINCLUDE_H | |
25 | |
26 #include <ctype.h> | |
36822
882657a9f768
xdiff: replace {unsigned ,}long with {u,}int64_t
Jun Wu <quark@fb.com>
parents:
36763
diff
changeset
|
27 #include <stdint.h> |
36671 | 28 #include <stdio.h> |
29 #include <stdlib.h> | |
30 #include <string.h> | |
31 #include <limits.h> | |
32 | |
33 #include "xmacros.h" | |
34 #include "xdiff.h" | |
35 #include "xtypes.h" | |
36 #include "xutils.h" | |
37 #include "xprepare.h" | |
38 #include "xdiffi.h" | |
39 | |
40 | |
41 #endif /* #if !defined(XINCLUDE_H) */ |