GNU bug report logs -
#8545
issues with recent doprnt-related changes
Previous Next
Reported by: Paul Eggert <eggert <at> cs.ucla.edu>
Date: Mon, 25 Apr 2011 05:48:01 UTC
Severity: normal
Done: Eli Zaretskii <eliz <at> gnu.org>
Bug is archived. No further changes may be made.
Full log
View this message in rfc822 format
> Date: Wed, 27 Apr 2011 22:29:25 -0700
> From: Paul Eggert <eggert <at> cs.ucla.edu>
> CC: lekktu <at> gmail.com, 8545 <at> debbugs.gnu.org
>
> On 04/27/11 22:15, Eli Zaretskii wrote:
> > As I explain in another message, we _can_ dereference this invalid
> > pointer.
>
> Sorry, I'm not quite following, since I'm not sure what
> the "another message" refers to.
If you didn't receive it, you will find it filed in the bug tracker.
> Hmm, perhaps you're talking about this pattern in the code?
>
> while (fmt < format_end)
> { ... fmt++ ... }
> switch (*fmt++)
Yes, the loop (which increments the pointer more than once), the
reference with postincrement in the switch statement, and the
following dereference in fmt[-1] in the call to `error'.
> Here, the code is dereferencing *format_end,
> which means it's dereferencing one past the end of the
> format string that is passed to it.
No, it can dereference *(format_end+1).
> If the intent here is that one should call doprnt with
> the pattern (doprnt (A, ASIZE, B, B + BSIZE - 1, AP)) then
> I suggest that the point be made clearly in doprnt's comment,
> as part of doprnt's API, to prevent future confusion in
> this area.
No, it should be called as B+BSIZE.
This bug report was last modified 4 years and 251 days ago.
Previous Next
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.