[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Gnash-commit] gnash ChangeLog server/vm/ASHandlers.cpp
From: |
Sandro Santilli |
Subject: |
[Gnash-commit] gnash ChangeLog server/vm/ASHandlers.cpp |
Date: |
Sat, 18 Aug 2007 17:47:31 +0000 |
CVSROOT: /sources/gnash
Module name: gnash
Changes by: Sandro Santilli <strk> 07/08/18 17:47:31
Modified files:
. : ChangeLog
server/vm : ASHandlers.cpp
Log message:
* server/vm/ASHandlers.cpp (CommonGetUrl): always check
for URL (security). Give precedence to loadVariable calls
even if target is _level#. Fixes load of uptoten.com.
CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/gnash/ChangeLog?cvsroot=gnash&r1=1.4033&r2=1.4034
http://cvs.savannah.gnu.org/viewcvs/gnash/server/vm/ASHandlers.cpp?cvsroot=gnash&r1=1.119&r2=1.120
Patches:
Index: ChangeLog
===================================================================
RCS file: /sources/gnash/gnash/ChangeLog,v
retrieving revision 1.4033
retrieving revision 1.4034
diff -u -b -r1.4033 -r1.4034
--- ChangeLog 18 Aug 2007 16:48:43 -0000 1.4033
+++ ChangeLog 18 Aug 2007 17:47:30 -0000 1.4034
@@ -1,5 +1,8 @@
2007-08-18 Sandro Santilli <address@hidden>
+ * server/vm/ASHandlers.cpp (CommonGetUrl): always check
+ for URL (security). Give precedence to loadVariable calls
+ even if target is _level#. Fixes load of uptoten.com.
* plugin/plugin.cpp: Use the environmental variable
GNASH_PLUGIN_DESCRIPTION for the plugin description
(when set).
Index: server/vm/ASHandlers.cpp
===================================================================
RCS file: /sources/gnash/gnash/server/vm/ASHandlers.cpp,v
retrieving revision 1.119
retrieving revision 1.120
diff -u -b -r1.119 -r1.120
--- server/vm/ASHandlers.cpp 10 Aug 2007 14:06:36 -0000 1.119
+++ server/vm/ASHandlers.cpp 18 Aug 2007 17:47:31 -0000 1.120
@@ -17,7 +17,7 @@
// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
//
-/* $Id: ASHandlers.cpp,v 1.119 2007/08/10 14:06:36 strk Exp $ */
+/* $Id: ASHandlers.cpp,v 1.120 2007/08/18 17:47:31 strk Exp $ */
#ifdef HAVE_CONFIG_H
#include "config.h"
@@ -1818,18 +1818,21 @@
const URL& baseurl = get_base_url();
URL url(url_s, baseurl);
- log_msg(_("get url: target=%s, url=%s (%s), method=%x"),
target_string.c_str(),
- url.str().c_str(), url_c, method);
+ log_msg(_("get url: target=%s, url=%s (%s), method=%x (sendVars:%X,
loadTarget:%d, loadVariable:%d)"), target_string.c_str(),
+ url.str().c_str(), url_c, method, sendVarsMethod,
loadTargetFlag, loadVariableFlag);
- if ( target_string.compare(0, 6, "_level") == 0 &&
target_string.find_first_not_of("0123456789", 7) == string::npos )
+ if ( ! URLAccessManager::allow(url) )
{
- unsigned int levelno = atoi(target_string.c_str()+6);
- log_debug(_("Testing _level loading (level %u)"), levelno);
- VM::get().getRoot().loadLevel(levelno, url);
+ return;
}
- else if ( loadTargetFlag )
- {
+
character* target_ch = env.find_target(target);
+ sprite_instance* target_movie = target_ch ? target_ch->to_movie() : 0;
+
+ if ( loadVariableFlag )
+ {
+ log_msg(_("getURL2 loadVariable"));
+
if ( ! target_ch )
{
log_error(_("get url: target %s not found"),
@@ -1837,7 +1840,6 @@
return;
}
- sprite_instance* target_movie = target_ch->to_movie();
if ( ! target_movie )
{
log_error(_("get url: target %s is not a sprite"),
@@ -1845,23 +1847,14 @@
return;
}
- if ( loadVariableFlag )
- {
- log_msg(_("getURL2 loadVariable"));
-
- //log_unimpl("Unhandled GetUrl2 loadVariable flag.
loadTargetFlag=%d, target=%s (%s)", loadTargetFlag, target.typeOf(),
target.to_string(&env).c_str());
target_movie->loadVariables(url, sendVarsMethod);
- }
- else
- {
- log_msg(_("getURL2 target load"));
- // Check host security
- if ( ! URLAccessManager::allow(url) )
- {
return;
}
+ if ( loadTargetFlag )
+ {
+ log_msg(_("getURL2 target load"));
if ( sendVarsMethod )
{
@@ -1870,13 +1863,30 @@
sendVarsMethod);
}
- target_movie->loadMovie(url);
+ if ( ! target_ch )
+ {
+ if ( target_string.compare(0, 6, "_level") == 0 &&
target_string.find_first_not_of("0123456789", 7) == string::npos )
+ {
+ unsigned int levelno =
atoi(target_string.c_str()+6);
+ log_debug(_("Testing _level loading (level
%u)"), levelno);
+ VM::get().getRoot().loadLevel(levelno, url);
+ return;
}
+
+ log_error(_("get url: target %s not found"),
+ target_string.c_str());
+ return;
}
- else
- {
- if ( ! URLAccessManager::allow(url) )
+
+ if ( ! target_movie )
{
+ log_error(_("get url: target %s is not a sprite"),
+ target_string.c_str());
+ return;
+ }
+
+ target_movie->loadMovie(url);
+
return;
}
@@ -1889,18 +1899,23 @@
#ifndef __OS2__x
string command = "firefox -remote \"openurl(";
-#else
-static char browserExe[ 255 ] = "";
+#else // def __OS2__x
+ static char browserExe[ 255 ] = "";
- if ( browserExe[0] == 0 ) {
- PrfQueryProfileString( HINI_USER, (PSZ) "WPURLDEFAULTSETTINGS", (PSZ)
"DefaultBrowserExe", NULL,
+ if ( browserExe[0] == 0 )
+ {
+ PrfQueryProfileString( HINI_USER, (PSZ) "WPURLDEFAULTSETTINGS",
+ (PSZ) "DefaultBrowserExe", NULL,
(PVOID) browserExe, (LONG)sizeof(browserExe) );
}
+
string command = browserExe;
command += " -remote \"openurl(";
-#endif
+#endif // def __OS2__x
+
command += url.str();
-#if 0 // target testing
+
+#if 0 // target testing TODO: should we enable this by default?
if ( ! target_string.empty() )
{
command += ", " + target_string;
@@ -1909,7 +1924,7 @@
command += ")\"";
log_msg (_("Launching URL... %s"), command.c_str());
system(command.c_str());
- }
+
}
// Common code for SetTarget and SetTargetExpression. See:
- [Gnash-commit] gnash ChangeLog server/vm/ASHandlers.cpp,
Sandro Santilli <=