[lkml]   [2012]   [Mar]   [6]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
Messages in this thread
    SubjectRe: [PATCH] perf: Incorrect use of snprintf results in SEGV
    On Wed, 7 Mar 2012 11:42:49 +1100
    Anton Blanchard <> wrote:

    > This patch fixes repsep_snprintf by clamping the value at size - 1
    > which is the maximum snprintf can write before adding the NULL
    > terminator.

    I would be concerned by this, simply because I at least sometimes
    use snprintf-like functions with the understanding that I can check
    for overflow by comparing the return value to the size.

    ... Of course, I think I also make this mistake you describe in other
    code, so I'm gonna go look for that.

    But simply clamping the value might break code which is relying
    on the existing semantics. (And of course, any snprintf-related
    crash or misbehavior is likely to happen only when the planets are
    aligned just so...)

    Possible alternative: Check for a provided size value which is
    unreasonably large, and if you get one, assume that it's probably
    intended to be negative and refuse to write anything. I don't know
    what unreasonably large is, but "large enough that it would have been
    negative had it been a signed type" might be a good starting point --
    no one should be writing strings that long anyway*.

    [*] I am totally ready for someone in twenty years to throw that quote
    in my face contemptuously as it shows that I was hopelessly
    Listen, get this. Nobody with a good compiler needs to be justified.

     \ /
      Last update: 2012-03-07 01:53    [W:0.031 / U:0.112 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site