cvs -f log -N -r1.108.2.4 kjs_html.cpp

RCS file: /home/kde/kdelibs/khtml/ecma/kjs_html.cpp,v
Working file: kjs_html.cpp
head: 1.196
branch:
locks: strict
access list:
keyword substitution: kv
total revisions: 216;	selected revisions: 1
description:
----------------------------
revision 1.108.2.4
date: 2002/09/10 16:31:26;  author: mueller;  state: Exp;  lines: +4 -3
deny access to foreign iframes
=============================================================================
cvs -f diff -bp -u -r1.108.2.3 -r1.108.2.4 kjs_html.cpp
Index: kjs_html.cpp
===================================================================
RCS file: /home/kde/kdelibs/khtml/ecma/kjs_html.cpp,v
retrieving revision 1.108.2.3
retrieving revision 1.108.2.4
diff -b -p -u -r1.108.2.3 -r1.108.2.4
--- kjs_html.cpp	2002/01/08 13:42:53	1.108.2.3
+++ kjs_html.cpp	2002/09/10 16:31:26	1.108.2.4
@@ -858,7 +858,6 @@ KJSO KJS::HTMLElement::tryGet(const UStr
     case ID_FRAME: {
       DOM::HTMLFrameElement frameElement = element;
 
-      // p == "document" ?
       if (p == "frameBorder")          return getString(frameElement.frameBorder());
       else if (p == "longDesc")        return getString(frameElement.longDesc());
       else if (p == "marginHeight")    return getString(frameElement.marginHeight());
@@ -873,9 +872,11 @@ KJSO KJS::HTMLElement::tryGet(const UStr
     break;
     case ID_IFRAME: {
       DOM::HTMLIFrameElement iFrame = element;
+      KHTMLPart* part = iFrame.isNull() ? 0 : static_cast<DOM::HTMLIFrameElementImpl*>(iFrame.handle() )->frameDocument()->view()->part();
       if (p == "align")                return getString(iFrame.align());
-      // ### security check ?
-      else if (p == "document") {
+      else if ((iFrame.src().isEmpty() || !part || originCheck(part->url(), Window::retrieveActive()->part()->url())) 
+
+               && p == "document") {
         if ( !iFrame.isNull() )
           return getDOMNode( static_cast<DOM::HTMLIFrameElementImpl*>(iFrame.handle() )->frameDocument() );
 
