Magellan Linux

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

Parent Directory Parent Directory | Revision Log Revision Log


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