Re: Implementierung von malloc und free unter FreeBSD

From: Bernd Walter <ticso(at)cicely12.cicely.de>
Date: Fri, 10 Sep 2004 17:12:09 +0200

On Fri, Sep 10, 2004 at 01:38:43PM +0200, Harold Gutch wrote:
> On Fri, Sep 10, 2004 at 11:49:34AM +0200, Oliver Boris Fischer wrote:
> > Hallo Liste,
> >
> > 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.)
>
> Jein - AFAIK muss der Speicher zunaechst nur freigegeben werden.
> Die BSD-Implementationen von malloc() koennen aber per Symlink
> /etc/malloc.conf, per Umgebungsvariable, oder per globaler
> Variable in deinem Programm zu zusaetzlichem Verhalten gebracht
> werden. Prinzipiell sind das zwar Debug-Optionen, wenn du aber
> Performanceeinbussen in Kauf nimmst, kannst du z.B. die "J"
> Option benutzen, um zu garantieren, dass freigegebener Speicher
> nocht doch noch alte Daten enthaelt. Genauer ist das in der
> Manpage zu malloc() beschrieben.

Eben - dort steht -J wirkt beim malloc und nicht beim free.

> > 2. Stellt diese Standardeinstellung nicht ein Sicherheitsloch dar?
>
> Im Prinzip ja, ein boeses Programm koennte so viel Speicher wie
> moeglich alloziieren, den dann durchwuehlen, und alles was es so
> an Klartextstrings findet, speichern. Sicherheitsrelevante

Unsinn - von anderen Prozessen bekommt man nichts zu sehen.

> Programme (ssh/sshd/pgp/...) ueberschreiben daher kritische Daten
> im Speicher nach der Benutzung.

Das hat andere Gründe.

-- 
B.Walter                   BWCT                http://www.bwct.de
bernd(at)bwct.de                                  info(at)bwct.de
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 - 17:13:14 CEST

search this site