by hyatt » Tue Nov 26, 2013 5:50 pm
Please cite a specific example. I will try to list the systems this has worked on.
1. IBM /390 and beyond mainframes.
2. IBM RS workstations using AIX or Linux, IBM compiler and gcc
3. Intel x86 and x86-64 using gcc, intel icc, msvc, windows, all flavors of linux including lightweight kernels, windows through current version.
4. Dec alpha using their compiler, also gcc, running under VMS, Unix, linux, BSD unix, etc.
5. MIPS using both gcc and SGI's compiler, IRIX os.
6. Cray running unicos or cos, using Cray's C compiler or gcc. (original cray-1 architecture). Also crays using alpha processors.
7. Next
8. Apple OSX thru mountain lion.
9. HP's 64 bit processor, operating system and compiler
10. Sun SPARC running solaris or linux, Sun'c C compiler or gcc.
11. Next
Need I go on?
Not one single failure on any machine built or compiler written until Mavericks decided to abort when the source/destination overlaps. The copy didn't break even then, because it simply must work as it was used. The development guys decided to insert a hack to make it not work, for reasons unknown. They are getting a lot of heat because it has broken a LOT of programs... without any valid reason for doing so.
There is a HUGE difference between the overlapped strcpy() I did and using an unitialized pointer. And one can STILL cause strcpy to crash with non-overlapping pointers, so what is the point for catching one thing that has been harmless and effective for years, while STILL having a serious security issue due to the source being longer than the destination, which strcpy() has absolutely no clue about. It was a stupid decision. I suspect it will be undone pretty soon. As it should be.
Feel free to quote a system where it doesn't work. So far as I know, Crafty has run on every architecture and compiler on planet earth. Including less well-known boxes like the Hitachi, cray-2 and cray-3, An old Cyber 176, Fujitsu, etc... There was no reason to break this.