CVSROOT: /sources/gnash Module name: gnash Changes by: Rob Savoye <rsavoye> 07/12/21 00:56:07
Modified files: server/asobj : SharedObject.cpp . : ChangeLog Log message: * server/asobj/SharedObject.cpp: Use the domain name as part of the path for the .sol files. This avoids name collision. CVSWeb URLs: http://cvs.savannah.gnu.org/viewcvs/gnash/server/asobj/SharedObject.cpp?cvsroot=gnash&r1=1.17&r2=1.18 http://cvs.savannah.gnu.org/viewcvs/gnash/ChangeLog?cvsroot=gnash&r1=1.5236&r2=1.5237 Patches: Index: server/asobj/SharedObject.cpp =================================================================== RCS file: /sources/gnash/gnash/server/asobj/SharedObject.cpp,v retrieving revision 1.17 retrieving revision 1.18 diff -u -b -r1.17 -r1.18 --- server/asobj/SharedObject.cpp 20 Dec 2007 21:50:09 -0000 1.17 +++ server/asobj/SharedObject.cpp 21 Dec 2007 00:56:06 -0000 1.18 @@ -21,6 +21,10 @@ #include "config.h" #endif +#include <unistd.h> +#include <sys/stat.h> +#include <sys/types.h> + #include "amf.h" #include "sol.h" #include "SharedObject.h" @@ -47,6 +51,10 @@ namespace gnash { +#ifndef MAXHOSTNAMELEN +#define MAXHOSTNAMELEN 64 +#endif + as_value sharedobject_clear(const fn_call& fn); as_value sharedobject_flush(const fn_call& fn); as_value sharedobject_getlocal(const fn_call& fn); @@ -198,10 +206,7 @@ PropsSerializer props(sol, vm); ptr->visitPropertyValues(props); // We only want to access files in this directory - string newspec = rcfile.getSOLSafeDir(); - if (newspec.size() == 0) { - newspec = "./"; - } + string newspec; newspec += obj->getFilespec(); sol.writeFile(newspec, obj->getObjectName().c_str()); @@ -239,7 +244,35 @@ if (newspec.size() == 0) { newspec = "./"; } + + char *domain; + domain = new char[MAXHOSTNAMELEN+1]; + memset(domain, 0, MAXHOSTNAMELEN+1); +// if (getdomainname(domain, MAXHOSTNAMELEN) == -1) { +// log_error("Couldn't get domain name! %s", strerror(errno)); +// } + + + string url_s; + const URL& baseurl = get_base_url(); + URL url(url_s, baseurl); + log_msg(_("BASE URL=%s (%s)"), baseurl.str().c_str(), url.hostname().c_str()); + + if (url.hostname().size() == 0) { + strcpy(domain, "localhost"); + } + + newspec += domain; + int ret = mkdir(newspec.c_str(), S_IRUSR|S_IWUSR|S_IXUSR); + newspec += "/"; + if ((errno != EEXIST) && (ret != 0)) { + log_error("Couldn't create directory for .sol files: %s\n\t%s", + newspec.c_str(), strerror(errno)); + return as_value(false); + } + newspec += obj->getFilespec(); + obj->setFilespec(newspec); log_security("Opening SharedObject file: %s", newspec.c_str()); SOL sol; Index: ChangeLog =================================================================== RCS file: /sources/gnash/gnash/ChangeLog,v retrieving revision 1.5236 retrieving revision 1.5237 diff -u -b -r1.5236 -r1.5237 --- ChangeLog 21 Dec 2007 00:55:23 -0000 1.5236 +++ ChangeLog 21 Dec 2007 00:56:07 -0000 1.5237 @@ -1,3 +1,8 @@ +2007-12-20 Rob Savoye <[EMAIL PROTECTED]> + + * server/asobj/SharedObject.cpp: Use the domain name as part of the + path for the .sol files. This avoids name collision. + 2007-12-20 Sandro Santilli <[EMAIL PROTECTED]> * libbase/LoadThread.h: add warnings about getBytesTotal() use _______________________________________________ Gnash-commit mailing list Gnash-commit@gnu.org http://lists.gnu.org/mailman/listinfo/gnash-commit