Rheinwerk Computing < openbook > Rheinwerk Computing - Professionelle Bücher. Auch für Einsteiger.
Professionelle Bücher. Auch für Einsteiger

 << zurück
Linux-UNIX-Programmierung von Jürgen Wolf
Das umfassende Handbuch – 2., aktualisierte und erweiterte Auflage 2006
Buch: Linux-UNIX-Programmierung

Linux-UNIX-Programmierung
1216 S., mit CD, 49,90 Euro
Rheinwerk Computing
ISBN 3-89842-749-8
gp Kapitel A Sicherheit unter Linux
  gp A.1 Viren und Trojaner
  gp A.2 Der Superuser (su)
  gp A.3 Überlaufen von Logfiles
  gp A.4 Zugriffsrechte auf Dateien
  gp A.5 Das SUID-Bit
  gp A.6 Programme ohne Ausführrechte
  gp A.7 Buffer Overflow (Pufferüberlauf)
  gp A.8 Race Condition
  gp A.9 Temporäre Dateien
  gp A.10 chroot
  gp A.11 Umgebungsvariablen
  gp A.12 Zugriffsrechte – häufig gemachte Fehler
  gp A.13 system() und popen()
  gp A.14 Offene Filedeskriptoren
  gp A.15 Core Dump
  gp A.16 SQL Injection
  gp A.17 Filedeskriptor-Überlauf mit select()


Rheinwerk Computing

A.17 Filedeskriptor-Überlauf mit select()  toptop

Die Funktion select() wird häufig und gerne für Mulitplexing-Socket-I/O verwendet. Den Vorzug dieser Funktion haben Sie bereits kennen gelernt. Der Datentyp fd_set wird verwendet um eine Liste von Sockets zu speichern, welche Sie mit den FD_*-Makros manipulieren können. Ein genauerer Blick auf fd_set zeigt uns eine Struktur mit einem Mitglied – ein statisch alloziiertes Array von Integern. Die Größe des Arrays ist abhängig von FD_SETSIZE. Die Größe von FD_SETSIZE ist selten ein Problem – was schon eher ein Problem werden kann, ist, dass die Makros FD_SET() und FD_CLR() (womit ein Socketdeskriptor in fd_set gesetzt bzw. gelöscht wird) keinerlei Überlaufprüfung des Arrays (Bound Check) fd_set machen.

Solange Sie die maximale Anzahl von File -bzw. Socketdeskriptor so lassen, wie dieser mit FD_SETSIZE angegeben und definiert ist, ist das ganze kein Problem. Bedenken Sie allerdings, dass Sie bspw. in einem Serverprogramm, den Wert durch FD_SETSIZE fest einkompiliert haben. Und eben dass ist ein Problem. Was machen Sie auf einem Rechner, wo eben FD_SETSIZE Deskriptoren nicht mehr ausreichen bzw. noch schlimmer, Sie reduzieren die Ressource (bspw. mit der Funktion setrlimit() oder in der Shell mit ulimit -n 512 oder ulimit -n 64). Wenn Sie den Wert erhöhen, so hat dies in Ihrem Serverprogramm keinerlei Effekt, da dieses fest auf FD_SETSIZE einkompiliert ist. Beim reduzieren der maximalen Anzahl von gleichzeitig geöffneten Deskriptoren haben Sie allerdings einen Deskriptor-Überlauf. In solche einem Fall werden Sie wohl nicht drum herum kommen, einen eigenen Datentyp wie fd_set (dynamisches Array) zu erstellen und auch eigene FD_*-Funktionen, welche als Ersatz für die Makros dienen.

 << zurück
  
  Zum Rheinwerk-Shop
Neuauflage: Linux-UNIX-Programmierung
Neuauflage:
Linux-UNIX-
Programmierung

bestellen
 Ihre Meinung?
Wie hat Ihnen das Openbook gefallen?
Ihre Meinung

 Buchtipps
Zum Rheinwerk-Shop: Linux-Server






 Linux-Server


Zum Rheinwerk-Shop: Das Komplettpaket LPIC-1 & LPIC-2






 Das Komplettpaket
 LPIC-1 & LPIC-2


Zum Rheinwerk-Shop: Linux-Hochverfügbarkeit






 Linux-
 Hochverfügbarkeit


Zum Rheinwerk-Shop: Shell-Programmierung






 Shell-
 Programmierung


Zum Rheinwerk-Shop: Linux Handbuch






 Linux Handbuch


 Lieferung
Versandkostenfrei bestellen in Deutschland, Österreich und der Schweiz
Info





Copyright © Rheinwerk Verlag GmbH 2006
Für Ihren privaten Gebrauch dürfen Sie die Online-Version natürlich ausdrucken. Ansonsten unterliegt das Openbook denselben Bestimmungen, wie die gebundene Ausgabe: Das Werk einschließlich aller seiner Teile ist urheberrechtlich geschützt.
Alle Rechte vorbehalten einschließlich der Vervielfältigung, Übersetzung, Mikroverfilmung sowie Einspeicherung und Verarbeitung in elektronischen Systemen.


Nutzungsbestimmungen | Datenschutz | Impressum

Rheinwerk Verlag GmbH, Rheinwerkallee 4, 53227 Bonn, Tel.: 0228.42150.0, Fax 0228.42150.77, service@rheinwerk-verlag.de

Cookie-Einstellungen ändern