Rick,
The cause of this crash is fairly obvious. There is no check that the
string given as a file name is longer than the fixed length buffer.
I'm not sure what the philosophy here is since it is part of the stream
stuff. There doesn't seem to be any provision for raising an error.
One fix would be to just truncate the name to fit in the buffer:
Index: interpreter/platform/windows/SysFileSystem.cpp
===================================================================
--- interpreter/platform/windows/SysFileSystem.cpp (revision 9236)
+++ interpreter/platform/windows/SysFileSystem.cpp (working copy)
@@ -138,7 +138,15 @@
return; /* nothing more to do
}
/* copy the name to full area */
- strcpy(qualifiedName, unqualifiedName);
+ if (strlen(unqualifiedName) >= bufferSize)
+ {
+ strncpy(qualifiedName, unqualifiedName, bufferSize - 1);
+ qualifiedName[bufferSize - 1] = '\0';
+ }
+ else
+ {
+ strcpy(qualifiedName, unqualifiedName);
+ }
size_t namelen = strlen(qualifiedName);
/* name end in a colon? */
At this point, that is the fix I would go with. Or would you want
something else?
--
Mark Miesfeld
------------------------------------------------------------------------------
Try New Relic Now & We'll Send You this Cool Shirt
New Relic is the only SaaS-based application performance monitoring service
that delivers powerful full stack analytics. Optimize and monitor your
browser, app, & servers with just a few lines of code. Try New Relic
and get this awesome Nerd Life shirt! http://p.sf.net/sfu/newrelic_d2d_may
_______________________________________________
Oorexx-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/oorexx-devel