Re: Implementierung von malloc und free unter FreeBSD

From: Oliver Fromme <olli(at)lurza.secnetix.de>
Date: Fri, 10 Sep 2004 18:14:34 +0200 (CEST)

Oliver Boris Fischer <plexus(at)snafu.de> wrote:
> Gott, ich habe hier drei Tage an einem für mich unerklärlichen C-Problem
> geknobelt, bis ich bemerkte, daß free(p) den Speicher, auf den p zeigt,
> wahrscheinlich freigibt, jedoch die Daten, die in diesem Speicher
> abgelegt sind, unverändert läßt. Arbeite greife ich später wieder auf p
> zu, erhalte ich die Daten, die vor dem Aufruf von free() dort abgelegt
> waren. Daher zwei Fragen:
>
> 1. Ist eigentlich irgendwo festgelegt, was free mit dem Speicher,
> auf den p verweist, zu tun hat? (Natürlich außer ihn als
> frei zu markieren.)

Nein. Wenn Du Speicher freigegeben hast, ist undefiniert,
was passiert, wenn Du dennoch wieder darauf zugreifst, denn
der Pointer ist halt nicht mehr gültig. Es kann alles pas-
sieren vom Crash (SIGSEGV) über zufällige Daten bis hin zu
den ursprünglichen Daten.

> 2. Stellt diese Standardeinstellung nicht ein Sicherheitsloch dar?

Nö, wieso sollte es?

Gruß
   Olli

-- 
Oliver Fromme, secnetix GmbH & Co KG, Oettingenstr. 2, 80538 München
Any opinions expressed in this message may be personal to the author
and may not necessarily reflect the opinions of secnetix in any way.
"I have stopped reading Stephen King novels.
Now I just read C code instead."
        -- Richard A. O'Keefe
To Unsubscribe: send mail to majordomo(at)de.FreeBSD.org
with "unsubscribe de-bsd-questions" in the body of the message
Received on Fri 10 Sep 2004 - 18:14:51 CEST

search this site