Hallo, Am Thu, 15 Jan 2004, Al Bogner schrieb:
Am Mittwoch, 14. Januar 2004 23:42 schrieb David Haller:
Welche ausser do_brk() und do_mremap()?
Die hab ich mir jetzt naemlich gefixt. Mein Kernel? 2.4.16 :)
Warum verwendest du einen so alten Kernel? Daran, dass du nicht Kernel kompilieren kannst, kann es ja nicht liegen :-)
Keine Lust fuer 2.4.x noch gross was zu machen, und die fuer 2.6.x
noetigen Updates hab ich halt noch nicht fertig...
Da ist's einfacher, mal eben die 2 Dateien[1] zu patchen, und den
Kernel mit der jahrelang bewaehrten .config zu rekompilieren...
dh@slarty[4]: ~ (0)$ uname -r
2.4.16-3
dh@slarty[4]: ~ (0)$ l /boot/bzImage-`uname -r | cut -d- -f1`* | cut -b34-
1030080 Dec 14 2001 /boot/bzImage-2.4.16-1
[..]
1010248 Nov 30 2002 /boot/bzImage-2.4.16-3
918425 Mar 24 2003 /boot/bzImage-2.4.16-4
989788 Jan 11 17:42 /boot/bzImage-2.4.16-5
Den -5er muss ich aber noch testen, neben den sec-fixes hab ich da
auch noch die config gesaeubert (wie man auch an der Dateigroesse
sieht)... Den -4er hab ich nie verwendet, das war eh nur ne
"config-aufraeum"-Version.
Wenn 2.6.x aber nicht komplett mit meiner HW kann (und das ist
durchaus moeglich, z.B. hab ich damals meine Soundkarte nicht mit ALSA
zum Toenen bekommen, und nochwas anderes, das ich brauche faellt IIRC
raus), dann bleibe ich auch langfristig bei 2.4.x, werde mir dann aber
evtl. noch ein Update auf 2.4.<current> goennen.
-dnh
[1] Bis auf die Zeilennummern sollte das meist passen. Die Patches
sind aber nicht verifiziert und ich hab die Logik nicht komplett
nachvollzogen.
==== do_brk_do_mremap_2.4.16-fix.diff ====
--- mm/mmap.c~ Sun Nov 4 19:17:20 2001
+++ mm/mmap.c Sun Jan 11 15:49:51 2004
@@ -1014,6 +1014,13 @@
if (!len)
return addr;
+ /* fix for do_brk() bug http://www.securityfocus.com/bid/9138 */
+ if ((addr + len) > TASK_SIZE || (addr + len) < addr) {
+ printk("caught do_brk exploit!!!\n");
+ return -EINVAL;
+ }
+ /* end fix do_brk() */
+
/*
* mlock MCL_FUTURE?
*/
--- mm/mremap.c~ Fri Sep 21 05:31:26 2001
+++ mm/mremap.c Sun Jan 11 17:10:53 2004
@@ -237,6 +237,16 @@
if (new_len > TASK_SIZE || new_addr > TASK_SIZE - new_len)
goto out;
+ /* fix for do_mremap(). From