Annotation of /trunk/grub/patches/grub-0.97-unsigned-addresses.patch
Parent Directory | Revision Log
Revision 144 -
(hide 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 | niro | 144 | 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 |