Warum soll man nicht printf nehmen



  • #include <stdio.h>
    #include <stdlib.h>
    
    int main()
    {
        int i = 10;
        printf("%s", i);
        return 0;
    }
    

    Der Compiler gibt zwar eine warning aus, trotzdem stürzt das Programm ab... Das unsichere ist IMMER der Programmierer 🙂
    Also schau auf deine Specifier und nimm sie her!


  • Mod

    Das Wort "Sicherheit" ist bedeutungsüberladen.



  • GER_Moki schrieb:

    #include <stdio.h>
    #include <stdlib.h>
    
    int main()
    {
        int i = 10;
        printf("%s", i);
        return 0;
    }
    

    Der Compiler gibt zwar eine warning aus, trotzdem stürzt das Programm ab... Das unsichere ist IMMER der Programmierer 🙂
    Also schau auf deine Specifier und nimm sie her!

    Ok mein Programm stürzt ab und wo ist da dann die Sicherheit meines Systems gefährdet?



  • warumbananekrum schrieb:

    Ok mein Programm stürzt ab und wo ist da dann die Sicherheit meines Systems gefährdet?

    Du meinst die Frage nicht wirklich ernst, oder? 🙄



  • Doch, ich hätte gerne eine Erklärung warum der Absturz meines Programm eine Gefahr ist.

    Das Beispiel ist zwar sehr konstruiert, weil ja schon der Compiler warnt und man solche Fehler in der Regel vorher durch asserts schon ausgemerzt hat, aber trotzdem wäre ich froh wenn hier mal endlich jemand zu Potte kommt und mir erklärt warum printf die Sicherheit meines System in Gefahr bringt?

    Ich verstehe dies bei nichtvalidierung von irgendwelche Daten die von Außen kommen, aber halt nicht bei printf.



  • C wird oft zur Programmierung von Embedded-Systemen verwendet, die z.B. auch in Autos zum Einsatz kommen. Sollte hier (aus was für Gründen auch immer) diese "falsche" Zeile Code stehen (am besten noch in einer Funktion, die nur alle Nase lang aufgerufen wird), kann es sein, dass wichtige Steuerelemente wie zum Beispiel das ABS oder ESP oder sonstwas ausfällt.

    Ich hoffe, das Szenario ist dir gefährlich genug...



  • Wie SeppJ gesagt hat, ist Sicherheit "bedeutungsüberladen". Und ein nicht stabiles Programm fährt auch drunter.
    Aber wenn es dir um die Sicherheit des Systems geht, dann waren vor paar Jahren format string vulneribilities sehr weit verbreitet, die auf falscher Benutzung von printf & Co basieren.



  • GER_Moki schrieb:

    C wird oft zur Programmierung von Embedded-Systemen verwendet, die z.B. auch in Autos zum Einsatz kommen. Sollte hier (aus was für Gründen auch immer) diese "falsche" Zeile Code stehen (am besten noch in einer Funktion, die nur alle Nase lang aufgerufen wird), kann es sein, dass wichtige Steuerelemente wie zum Beispiel das ABS oder ESP oder sonstwas ausfällt.

    Ich hoffe, das Szenario ist dir gefährlich genug...

    Das ist ja lächerlich, das Programm wird sicherlich vorher so einige Male ausgiebig getestet(asserts, Testprogramme etc.). Da ist eine falsche Formel oder dessen Implementierung mindestens genauso gefährlich und eher wahrscheinlich, als das ein printf da sie Ursache für was gefährliches ist.



  • format string vulneribilities, na endlich mal was konkretes wonach ich suchen kann.



  • Ok, is doch nicht so schlimm, kommt wieder aufs berühmte eingaben prüfen raus. Das hat man in alles Sprachen. Also ich höre weiter...



  • Es ist relativ schlimm. Was viel schlimmeres findest du nicht. Mir fallen jetzt spontan keine Konstrukte ein, die schon per se eine Sicherheitslücke wären, ohne dass man was dagegen machen könnte und wenn man sie benutzt hat man ein automatisch ein Einfallstor. Das wär ein gravierender Konzeptfehler und sowas ist mir jetzt nicht bekannt. Als gefährlich bezeichnet man Konstrukte, die man falsch benutzen könnte, oder wo man leicht potenzielle Probleme übersieht.
    Aber wenn dir das Problem klar ist und du darauf achtest, kannst es schon benutzen, spricht im Grunde nichts dagegen.



  • Danke, für die sachliche Antwort. Davon gab es nicht viele hier, da merkt man doch wer Profi ist und wer nicht.



  • warumbananekrum schrieb:

    Danke, für die sachliche Antwort. Davon gab es nicht viele hier, da merkt man doch wer Profi ist und wer nicht.

    hahahaha! LOL!!! 🤡
    was willste sonst für ne fuction nehmen wenn du ne zahl ausgeben willst du keks? 🙄


  • Mod

    Genug getrollt.


Anmelden zum Antworten