1. Dashboard
  2. Forum
    1. Unerledigte Themen
  3. Mitglieder
    1. Letzte Aktivitäten
    2. Benutzer online
    3. Team-Mitglieder
    4. Trophäen
    5. Mitgliedersuche
  4. Tutorial Bereich
  • Anmelden
  • Registrieren
  • Suche
Dieses Thema
  • Alles
  • Dieses Thema
  • Dieses Forum
  • Seiten
  • Forum
  • Lexikon
  • Erweiterte Suche
  1. Informatik Forum
  2. Webmaster & Internet
  3. Entwicklung

malloc and the "safe" side

  • Kampi
  • 10. November 2009 um 16:01
  • Unerledigt
  • Kampi
    27
    Kampi
    Mitglied
    Reaktionen
    193
    Punkte
    7.828
    Beiträge
    1.468
    • 10. November 2009 um 16:01
    • #1

    hat jemand eine ahnung was gemeint sein koennte?

    Zitat


    > in line 428 there is the following code:
    > /* config file is ~/.bti */
    > file = alloca(strlen(session->homedir) + 7); > sprintf(file, "%s/.bti",session->homedir);

    Ugh, that's some horrible code, you really don't want to be reading it :)

    > "/.bti" makes 5 chars + 1 for '\0' makes 6, but you allocate 7 bytes.
    > the same thing in line 558:
    > filename = alloca(strlen(session->homedir) + > strlen(session->logfile) + 3); >sprintf(filename, "%s/%s", session->homedir, session->logfile);
    > the two strings + '/' + '\0' make +2, but you allocate +3
    > I am sure there is something I missed, but I don't get it :-/
    > any hints for a C n00b?

    It's just being paranoid and allocating one extra byte just to be "safe".

    Don't use it as a good example of coding style at all :)

    Alles anzeigen

    in welchem fall koennte dieses extrabyte safer sein?

    Willfähriges Mitglied des Fefe-Zeitbinder-Botnets und der Open Source Tea Party.

  • Plantschkuh!
    24
    Plantschkuh!
    Mitglied
    Reaktionen
    163
    Punkte
    6.173
    Beiträge
    1.181
    • 10. November 2009 um 16:21
    • #2

    Ich vermute er meint einfach (und zurecht), daß off-by-one-Fehler viel viel häufiger und schwerer zu bemerken sind als wenn man sich um mehr als 1 irrt. Wenn man also annimmt, daß die Berechnung der Länge fast sicher entweder stimmt oder um 1 zuwenig ergibt, dann ist man, wenn man 1 dazuzählt, fast sicher auf der sicheren Seite :)

    *plantsch*

  • Kampi
    27
    Kampi
    Mitglied
    Reaktionen
    193
    Punkte
    7.828
    Beiträge
    1.468
    • 10. November 2009 um 16:32
    • #3

    oookay, das kann ich mal prinzipiell nachvollziehen.
    in dem fall hab ich aber strlen + einen konstanten string/konstante anzahl an zeichen, was soll da also off-by-one werden?

    aber gut, Plantschkuh! und greg k-h widerlegen wird wohl etwas schwierig werden :winking_face:

    Willfähriges Mitglied des Fefe-Zeitbinder-Botnets und der Open Source Tea Party.

  • Plantschkuh!
    24
    Plantschkuh!
    Mitglied
    Reaktionen
    163
    Punkte
    6.173
    Beiträge
    1.181
    • 10. November 2009 um 17:18
    • #4
    Zitat von Kampi

    in dem fall hab ich aber strlen + einen konstanten string/konstante anzahl an zeichen, was soll da also off-by-one werden?


    Allein die Überlegung kostet mehr Zeit als einfach +1 hinzuschreiben :) So ist es außerdem einheitlicher: Wenn an manchen Stellen +1 steht und an anderen nicht, dann muß man erst ganz lang überlegen, ob und warum es immer stimmt.

    Ich würds auch nicht selber tun, aber ich kanns schon verstehn. Ist gerade noch eine vertretbare Menge an Voodoo.

    Edit: Wenn, dann würd ich es aber ganz explizit machen: Also statt foo + 7 würd ich foo + 6 + 1 schreiben. Naja, jedem seine Quirks :)

    *plantsch*

  • Kampi
    27
    Kampi
    Mitglied
    Reaktionen
    193
    Punkte
    7.828
    Beiträge
    1.468
    • 10. November 2009 um 17:52
    • #5
    Zitat von Plantschkuh!


    Edit: Wenn, dann würd ich es aber ganz explizit machen: Also statt foo + 7 würd ich foo + 6 + 1 schreiben. Naja, jedem seine Quirks :winking_face:


    das muss noch viel expliziter werden :distur:

    Code
    #define N (1)
    #define OFF_BY_N_PREVENTION N
    
    
    foo + 6 + OFF_BY_N_PREVENTION

    Willfähriges Mitglied des Fefe-Zeitbinder-Botnets und der Open Source Tea Party.

  • sorecut
    4
    sorecut
    Mitglied
    Reaktionen
    9
    Punkte
    174
    Beiträge
    31
    • 10. November 2009 um 19:20
    • #6

    haha kampi you made my day :shiner:

    blah

  • Maximilian Rupp 27. Dezember 2024 um 00:26

    Hat das Thema aus dem Forum Programmieren nach Entwicklung verschoben.

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!

Benutzerkonto erstellen Anmelden

Rechtliches

Impressum

Datenschutzerklärung