Magellan Linux

Contents of /trunk/grub/patches/grub-0.97-unsigned-addresses.patch

Parent Directory Parent Directory | Revision Log Revision Log


Revision 144 - (show annotations) (download)
Tue May 8 20:06:05 2007 UTC (16 years, 11 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