[syslinux] [PATCH] chrreplace: Don't skip the first character
Gene Cumm
gene.cumm at gmail.com
Mon Sep 28 03:00:04 PDT 2015
On Mon, Sep 28, 2015 at 4:29 AM, Erwan Velu <erwanaliasr1 at gmail.com> wrote:
> Just looking at the code and the description of it, for me the current code
> looks wrong and the proposed patch correct for the following reason:
>
> The while loop is made for insuring that *source is valid but just after
> shift the pointer by one.
> This new position isn't tested and so we are addressing an unknown area.
> That could corrupt some memory.
>
> But also as reported, that prevent from changing the first char.
>
> I've been contributing that code and sounds like only the code I produced is
> using it (hdt & the pci scan).
> So I'd vote for including that patch. If any regression occur, I'd look at
> it.
>
> Thanks for reporting, +1 for the merge.
Thanks. Commit ID 779a4c8
--
-Gene
> 2015-09-22 12:45 GMT+02:00 Gene Cumm <gene.cumm at gmail.com>:
>>
>> Erwan, could you shed some light on this? Was the behavior
>> intentional? If not, I think it might prove more useful down the road
>> to commit this patch. Original code in commit ID 85d9a1a
>>
>> --
>> -Gene
>>
>> On Sat, May 16, 2015 at 3:30 AM, Josh Triplett via Syslinux
>> <syslinux at zytor.com> wrote:
>> > Check if the first character matches the character to replace, rather
>> > than skipping it and starting with the second.
>> >
>> > Signed-off-by: Josh Triplett <josh at joshtriplett.org>
>> > ---
>> >
>> > I'm assuming, based on a look at the callers, that this is not
>> > intentional, and that it just happened that none of the callers happened
>> > to ever need to replace the first character.
>> >
>> > com32/lib/chrreplace.c | 2 +-
>> > 1 file changed, 1 insertion(+), 1 deletion(-)
>> >
>> > diff --git a/com32/lib/chrreplace.c b/com32/lib/chrreplace.c
>> > index 65786f9..cfbf5d4 100644
>> > --- a/com32/lib/chrreplace.c
>> > +++ b/com32/lib/chrreplace.c
>> > @@ -4,8 +4,8 @@
>> > void chrreplace(char *source, char old, char new)
>> > {
>> > while (*source) {
>> > - source++;
>> > if (source[0] == old) source[0]=new;
>> > + source++;
>> > }
>> > }
More information about the Syslinux
mailing list