Wofür C++ und C?



  • Mr. N schrieb:

    Sagt dir Buffer Overflow und One Off Error etwas?

    Sind doch so typische C/C++ Fehler.



  • scnr schrieb:

    Mr. N schrieb:

    Sagt dir Buffer Overflow und One Off Error etwas?

    Sind doch so typische C/C++/Java/Smalltalk/Cobol/Fortran/ASM/... (choose one) Fehler.

    Der ist einfach so schön, der muss wieder her:

    --------------------------
                             /|  /|  |                          |
                             ||__||  |       Trolle bitte       |
                            /   O O\__           nicht          |
                           /          \         füttern!        |
                          /      \     \                        |
                         /   _    \     \ ----------------------
                        /    |\____\     \     ||
                       /     | | | |\____/     ||
                      /       \|_|_|/   |    __||
                     /  /  \            |____| ||
                    /   |   | /|        |      --|
                    |   |   |//         |____  --|
             * _    |  |_|_|_|          |     \-/
          *-- _--\ _ \     //           |
            /  _     \\ _ //   |        /
          *  /   \_ /- | -     |       |
            *      ___ c_c_c_C/ \C_c_c_c____________
    

    Gruß,

    Simon2.



  • Um mit Java nen Buffer Overflow hin zu bekommen, musst du dich schon richtig gut auskennen, und wer sich so gut auskennt macht solche Fehler nicht. Aber in C++ bekommt die jeder Anfänger hin und macht sie auch.

    Simon2 schrieb:

    Ich bin dumm

    ich kann dich auch falsch zitieren



  • scnr schrieb:

    Simon2 schrieb:

    Ich bin dumm

    ich kann dich auch falsch zitieren

    Auch wenn er Dich richtig zitiert hätte, wär's nicht besser gewesen. Man könnte der Liste noch VB6 hinzufügen, selbst da kann man mit etwas Know-How einen Buffer Overflow hinbekommen.



  • scnr schrieb:

    Um mit Java nen Buffer Overflow hin zu bekommen, ...

    "Lesen, mein lieber Watson !! Lesen ist das A und O beim Verstehen !"



  • na dann is ja gut 🙄



  • In C++ ist ein Buffer Overflow nur einfach, wenn man es falsch benutzt. In C produzieren den selbst Profis am laufenden Band.



  • Mr. N schrieb:

    In C++ ist ein Buffer Overflow nur einfach, wenn man es falsch benutzt. In C produzieren den selbst Profis am laufenden Band.

    --------------------------
                             /|  /|  |                          |
                             ||__||  |       Trolle bitte       |
                            /   O O\__           nicht          |
                           /          \         füttern!        |
                          /      \     \                        |
                         /   _    \     \ ----------------------
                        /    |\____\     \     ||
                       /     | | | |\____/     ||
                      /       \|_|_|/   |    __||
                     /  /  \            |____| ||
                    /   |   | /|        |      --|
                    |   |   |//         |____  --|
             * _    |  |_|_|_|          |     \-/
          *-- _--\ _ \     //           |
            /  _     \\ _ //   |        /
          *  /   \_ /- | -     |       |
            *      ___ c_c_c_C/ \C_c_c_c____________
    

    😉



  • Undertaker schrieb:

    Mr. N schrieb:

    In C++ ist ein Buffer Overflow nur einfach, wenn man es falsch benutzt. In C produzieren den selbst Profis am laufenden Band.

    <<Snip>>
    

    😉

    Sorry, das war ernst gemeint. Ich lese ständig Sicherheitswarnungen über Buffer-Overflows in C-Programmen...

    Und wenn ich bedenke, dass strcat, sprintf etc. Buffer-Overflows geradezu erzwingen und so Funktionen wie strncat auch nicht viel besser sind, dann lob ich mir doch mein std::string. :p



  • wenn man bedenkt, dass C ein Teil von C++ ist.



  • Mr. N schrieb:

    Und wenn ich bedenke, dass strcat, sprintf etc. Buffer-Overflows geradezu erzwingen und so Funktionen wie strncat auch nicht viel besser sind, dann lob ich mir doch mein std::string.

    hast du nicht gesagt, dass buffer-overflows passieren können, wenn man irgendwas falsch benutzt? selbiges gilt auch für std::string, z.b. einen char* geholt mit c_str() oder data() und die overflow-gefahren sind alle wieder da. auch wenn du alles richtig machst, besteht immer noch die möglichkeit, dass std::string seine capacity nicht erhöhen kann (weil der globale heap zu 99% voll ist). es gibt keine sicherheit in C und C++. C++ bietet vielleicht eine trügerische sicherheit, aber ich bezweifle dass das irgendwie besser ist als gar keine sicherheit (wie in C). eher schlimmer.
    🙂



  • Beides falsch (gemäß dem Titel werde ich die Aussagen nicht wiederholen).

    Gruß,

    Simon2.



  • gibts auch was bei C++ das man nicht falsch machen kann?



  • ... und warum bin ich ein Unreg-Troll, der keine Freunde aber haufenweise Pickel hat ?



  • frage. schrieb:

    gibts auch was bei C++ das man nicht falsch machen kann?

    ich glaube nicht.
    könnte schon sein, dass C++ von allen programmiersprachen die sprache ist, mit der man theoretisch pro codezeile die meisten fehler produzieren kann.
    🙂



  • Könnte aber viel eher ein, dass Undertaker der Troll ist, der den meisten Unsinn pro Zeile verfasst.



  • Undertaker schrieb:

    Mr. N schrieb:

    Und wenn ich bedenke, dass strcat, sprintf etc. Buffer-Overflows geradezu erzwingen und so Funktionen wie strncat auch nicht viel besser sind, dann lob ich mir doch mein std::string.

    hast du nicht gesagt, dass buffer-overflows passieren können, wenn man irgendwas falsch benutzt? selbiges gilt auch für std::string, z.b. einen char* geholt mit c_str() oder data() und die overflow-gefahren sind alle wieder da.

    Falsch, c_str() und data() liefern konstante C-Strings (char const *).

    Undertaker schrieb:

    auch wenn du alles richtig machst, besteht immer noch die möglichkeit, dass std::string seine capacity nicht erhöhen kann (weil der globale heap zu 99% voll ist).

    Aber das konstituiert keine Sicherheitslücke. 🙄 [Außer vielleicht ein DoS, aber dagegen ist man nie ganz geweiht.]

    Undertaker schrieb:

    es gibt keine sicherheit in C und C++. C++ bietet vielleicht eine trügerische sicherheit, aber ich bezweifle dass das irgendwie besser ist als gar keine sicherheit (wie in C). eher schlimmer.
    🙂

    So ein Blödsinn. std::string halbwegs(*) richtig benutzen ist leicht. Und subtile Gefahren gibt es da auch nicht wirklich.

    (*): So Dinge wie void foo(std::string x); sind zwar nicht wirklich richtig, aber kein wirkliches Problem, außer für die Performance.



  • So Dinge wie void foo(std::string x); sind zwar nicht wirklich richtig, aber kein wirkliches Problem, außer für die Performance.

    man, kann man da viel falsch machen. 🤡



  • Undertaker schrieb:

    könnte schon sein, dass C++ von allen programmiersprachen die sprache ist, mit der man theoretisch pro codezeile die meisten fehler produzieren kann.

    Das kann so sein, muss aber nicht : http://www.c-plusplus.net/forum/viewtopic-var-t-is-192168.html
    🙂



  • Mr. N schrieb:

    std::string halbwegs(*) richtig benutzen ist leicht. Und subtile Gefahren gibt es da auch nicht wirklich.

    denk doch nur mal an operator[]
    🙂


Anmelden zum Antworten