Keresés

Hirdetés

Új hozzászólás Aktív témák

  • moha21

    addikt

    válasz Angel1981 #20 üzenetére

    Hát jah.

    (#23) =Mentor= : Ugye ezt te sem gondolod komolyan? Mp3-om lejátszóm már rég volt és utána jelent meg az ipod..

    [ Szerkesztve ]

    Nem az az igazi férfi aki minden nőt meghódít, hanem aki ismeri a nagyfeszültségű földkábelek szigetelésének technikáját.

  • whitezo88

    nagyúr

    válasz Angel1981 #20 üzenetére

    őt szinte senki ismerte, programozókon kívül. Jobsot meg picit többen. Henry Fordra se emlékezünk meg, pedig ő meg az autók egyik fő megálmodója. SJ showman volt és divatot teremtett. Így még a piaci előnyét is tudta növelni.
    Steve Ballmer is nyomja a showt, bár az nevetségesebb.

  • drkbl

    őstag

    válasz Angel1981 #20 üzenetére

    A gets() függvényért, a visszatérési cím felé bővülő stackért biztosan emlékezetes marad ő is - bár, hogy "működjön", egy magyarra, Neumannra is szükség volt. :)

    Bővebben:

    "There are some insecure design and implementation choices in the original C compiler and its descendants that will continue to cause trouble for decades if not centuries. One of those is the decision to make array base addresses work the same way as pointers, abandoning any attempt at bounds checking. This wouldn't have been so bad had the first C compiler not also maintained the tradition of combining data and flow control information on a single stack: a pattern not unique to C by any means, but any new language (particularly one built as part of an entirely new OS) has the opportunity to discard that particular piece of traditional baggage, and C didn't.

    By the time C was designed, it had become traditional for processors that provided hardware-managed stack pointer registers to put an empty stack at the highest memory address, and grow the stack "downward" in memory (perhaps because if you're looking at a core dump, the stack can be seen to grow upward on the page). The C compiler, like Algol and Pascal and B and BCPL and all the other recursion-supporting languages before it, allocates space for local variables inside a stack frame on the same stack that the processor uses to push subroutine return addresses. These two facts conspire to produce the outcome that if writes to a locally allocated variable can be persuaded to overflow it (which C's complete lack of bounds checking makes particularly easy) they will overwrite one or more subroutine return addresses, and cause the subroutine to "return" to somewhere quite arbitrary. This is the notorious "buffer overflow" problem, and it's become the single most-exploited method for malware to get a toehold.

    What could easily have been done instead is to keep a second stack for local data, much as FORTH does; it could even be in a completely separate memory segment from the one the processor uses for subroutine return addresses. Such a local data stack should be empty at the beginning of its memory segment and grow toward high memory. That way, a buffer overflow would at worst trash only other local variables within its own stack frame before extending into completely unused space, and it would not be possible to use such an overflow to pervert a subroutine's return address. And if it were normal practice for the compiler to allocate variables of function pointer type before other variables in any stack frame and char[] variables last, it would not be possible for a typical buffer overflow to pervert control flow in any way whatsoever." [link]

Új hozzászólás Aktív témák