C source Code analyser

lockdoc

Well-Known Member
Hallo,

Gibt es eigentlich fuer C einen analyser der source-code nach moeglichen buffer overflows checkt?
Optimalerweise waere es natuerlich, wenn sich soetwas in den ports finden lassen wuerde.

LG
lockdoc
 
valgrind --memcheck

verwende ich immer auf der arbeit.
SEHR SEHR SEHR geiles tool!

das checkt zwar nicht den sourcecode, sondern das executable.
aber wenn du das mit "gcc -g" durchcompiliert hast sollte das dir genuegend hilfestellung geben.
 
Das Problem ist generell nicht entscheidbar. Ein Tool kann hoechstens Hinweise geben, wo moeglicherweise ein Problem ist. Tools wie splint geben dabei ziemlich viele false positives aus und sind dennoch nicht in der Lage, alle potentiellen Probleme aufzudecken. Tools wie valgrind arbeiten (AFAIK) zur Laufzeit und finden potentielle Probleme nur dann, wenn sie tatsaechlich zur Laufzeit getriggert werrden.

Man koennte im Prinzip ein Programm (egal ob als C-Source oder als Binary) statisch analysieren und durch abstrakte Interpretation etwaige Problemstellen gezielter lokalisieren, als das mit splint oder valgrind moeglich ist. Aber selbst dabei wuerde man weder alle Bugs finden noch false positives vermeiden.
 
Es geht halt um folgende Problematik.
Im Code sind absichtlicherweise Fehler wie overflows eingebaut und es gilt es diese zu finden und zwar soviel wie möglich, darum wäre ein tool, welches potentielle (auch scheinbar falsche) Fehler anzeigt (und zwar im source) super, da es genau für diesen zweck gebraucht wird.
LG
lockdoc
 
@kili: ach nein, sag bloss. aber hilfestellungen können "hilf"reich sein ;) und splint ist bestimmt nicht nutzlos, man muss nur damit umgehen koennen...

lockdoc: in dem fall solltest du dich lieber der sourcecode-analyse per hand bemühen, dass zeigt den meisten lerneffekt. oder warum analysierst du sonst solches zeug.
 
Ich benutze gerade in einem grösseren Softwareprojekt Coverity Prevent zur statischen Codeanalyse und das ist wirklich gut. Zaubern kann das Teil aber nicht - ich habe auch schon ein paar Fehler in der Code-Flow-Analyse gefunden. Trotzdem ist es recht wertvoll, gerade bei riesen Softwareprojekten die über die Jahre gewachsen sind und eine entsprechende Qualität haben. Allerdings soll der EK heftige Schmerzen wegen des Preise gehabt haben.

Nachtrag: Wenn es um den Lerneffekt geht (absichtlich eingebaute Fehler): Eine statische Codeanalyse ist kein Hexenwerk. Mit einiger Arbeit kann man das Selber machen. Mann lernt auch noch viel dabei und evtl. bekommen wir ja ein neues OS Tool. :)
 
@ed1949: haha ;-) ja das wär natürlich gut wa, aber soviel zeit bleibt mir dafür leider nicht mehr

@mecace: ja da bin ich schon gut dabei, aber leider finde ich nicht alles darum ist so ein tool immer gut und auch damit lernt man. Man muss ja eh kucken, ob da wirklich ein Fehler auftreten könnte
 
Nicht speziell fuer Buffer Overflows, aber unterschiedliche Compiler liefern unterschiedliche Fehlermeldungen, was an sich schon hilfreich sein kann. Also den Code mal mit gcc, icc und clang und hohen Warnungen uebersetzen.

Dann natuerlich valgrind, welches viele Fehler zur Laufzeit erkennt, dann sicherlich "man malloc.conf" und zur statischen Analyse taugt auch clang/Static analyzer schon ganz ordentlich (ist aber noch in den Kinderschuhen und kein Vergleich zu Coverity, dafuer aber umsonst :), sieht dann zB aus wie hier: https://www.spoerlein.net/scan-build/
 
Zurück
Oben