[U-Boot] [PATCH V2] memcpy/memmove: Do not copy to same address

Alexander Holler
2011-05-23T22:38:49Z

Am 24.05.2011 00:22, schrieb Wolfgang Denk:
> Dear Alexander Holler,
>
> In message<4DDADBB6.30607@ahsoftware.de> you wrote:
>>
>> So you I will look forward to checks for NULL pointers and similiar in
>> all C standard functions implemented in u-boot to circumvent tons of
>> possible real world bugs in all callers of strcpy, strlen, mem* and
>> whatever.
>
> If you think a bit about this, you may find it more difficult than you
> expect. Keep in mind that on most systems supported by U-Boot code
> like
>
> int *p = (int *)0;
>
> print("*p = %d\n", *p);
>
> is perfectly legal and supposed to work without any problems -
> because 0 is a legal address, and it makes perfect senze that commands
> like "md" or "cp" can be used to access it. In the result, strcpy(),
> strlen(), mem*() and whatever must beable to work on address 0 likeon
> any other address, too.
>
> :-P

I've never seen a valid use of strcpy() with a null-pointer in real
world programs, which we are talking about, except in bugs.

BTW, you missed to quote my suggestion to get rid of the implementation
of memcpy() and use always memmove(). That would be really defensive
programming and if the unnecessary identity-check in memcpy isn't of
interest, the additional other check done by memmove() shouldn't be a
problem too.

But I will stop complaining as requested and getting silent again.

Regards,

Alexander