Contents of /trunk/grub/patches/grub-0.97-unsigned-addresses.patch
Parent Directory | Revision Log
Revision 144 -
(show annotations)
(download)
Tue May 8 20:06:05 2007 UTC (17 years, 4 months ago) by niro
File size: 2160 byte(s)
Tue May 8 20:06:05 2007 UTC (17 years, 4 months ago) by niro
File size: 2160 byte(s)
-import
1 | Patch from upstream bug tracker to fix memory checks on systems with a lot of |
2 | ram (like 2G+, sizes that overflow a signed integer). |
3 | |
4 | http://savannah.gnu.org/bugs/?func=detailitem&item_id=9954 |
5 | http://bugs.gentoo.org/99897 |
6 | |
7 | --- grub-0.97/stage2/char_io.c |
8 | +++ grub-0.97/stage2/char_io.c |
9 | @@ -1214,7 +1214,7 @@ grub_strlen (const char *str) |
10 | # endif |
11 | #endif |
12 | int |
13 | -memcheck (int addr, int len) |
14 | +memcheck (unsigned long addr, unsigned long len) |
15 | { |
16 | #ifdef GRUB_UTIL |
17 | # ifdef __PIC__ |
18 | @@ -1226,12 +1226,12 @@ memcheck (int addr, int len) |
19 | return ! errnum; |
20 | # endif |
21 | # else /* __PIC__ */ |
22 | - auto int start_addr (void); |
23 | - auto int end_addr (void); |
24 | + auto unsigned long start_addr (void); |
25 | + auto unsigned long end_addr (void); |
26 | |
27 | - auto int start_addr (void) |
28 | + auto unsigned long start_addr (void) |
29 | { |
30 | - int ret; |
31 | + unsigned long ret; |
32 | # if defined(HAVE_START_SYMBOL) |
33 | asm volatile ("movl $start, %0" : "=a" (ret)); |
34 | # elif defined(HAVE_USCORE_START_SYMBOL) |
35 | @@ -1242,9 +1242,9 @@ memcheck (int addr, int len) |
36 | return ret; |
37 | } |
38 | |
39 | - auto int end_addr (void) |
40 | + auto unsigned long end_addr (void) |
41 | { |
42 | - int ret; |
43 | + unsigned long ret; |
44 | # if defined(HAVE_END_SYMBOL) |
45 | asm volatile ("movl $end, %0" : "=a" (ret)); |
46 | # elif defined(HAVE_USCORE_END_SYMBOL) |
47 | @@ -1283,7 +1283,7 @@ |
48 | void * |
49 | grub_memmove (void *to, const void *from, int len) |
50 | { |
51 | - if (memcheck ((int) to, len)) |
52 | + if (memcheck ((unsigned long) to, len)) |
53 | { |
54 | /* This assembly code is stolen from |
55 | linux-2.2.2/include/asm-i386/string.h. This is not very fast |
56 | @@ -1321,7 +1321,7 @@ |
57 | { |
58 | char *p = start; |
59 | |
60 | - if (memcheck ((int) start, len)) |
61 | + if (memcheck ((unsigned long) start, len)) |
62 | { |
63 | while (len -- > 0) |
64 | *p ++ = c; |
65 | --- grub-0.97/stage2/shared.h |
66 | +++ grub-0.97/stage2/shared.h |
67 | @@ -912,7 +912,7 @@ int substring (const char *s1, const cha |
68 | int nul_terminate (char *str); |
69 | int get_based_digit (int c, int base); |
70 | int safe_parse_maxint (char **str_ptr, int *myint_ptr); |
71 | -int memcheck (int start, int len); |
72 | +int memcheck (unsigned long start, unsigned long len); |
73 | void grub_putstr (const char *str); |
74 | |
75 | #ifndef NO_DECOMPRESSION |