--- khtml/ecma/kjs_html.cpp
+++ khtml/ecma/kjs_html.cpp
@@ -1866,9 +1866,11 @@ Value KJS::HTMLElement::getValueProperty
getDOMNode(exec, frameElement.contentDocument()) : Undefined();
case FrameContentWindow: {
KHTMLPart* part = static_cast(frameElement.handle())->contentPart();
- if (part)
- return Value(Window::retrieveWindow(part));
- else
+ if (part) {
+ Window *w = Window::retrieveWindow(part);
+ if (w)
+ return Value(w);
+ }
return Undefined();
}
case FrameFrameBorder: return String(frameElement.frameBorder());
@@ -1899,9 +1901,11 @@ Value KJS::HTMLElement::getValueProperty
getDOMNode(exec, iFrame.contentDocument()) : Undefined();
case IFrameContentWindow: {
KHTMLPart* part = static_cast(iFrame.handle())->contentPart();
- if (part)
- return Value(Window::retrieveWindow(part));
- else
+ if (part) {
+ Window *w = Window::retrieveWindow(part);
+ if (w)
+ return Value(w);
+ }
return Undefined();
}
case IFrameFrameBorder: return String(iFrame.frameBorder());
--- kioslave/ftp/ftp.cc
+++ kioslave/ftp/ftp.cc
@@ -58,6 +58,7 @@
#include
#include
#include
+#include
#include
#include
#include
@@ -835,7 +836,6 @@ bool Ftp::ftpSendCmd( const QCString& cm
return true;
}
-
/*
* ftpOpenPASVDataConnection - set up data connection, using PASV mode
*
@@ -853,6 +853,8 @@ int Ftp::ftpOpenPASVDataConnection()
if (sa != NULL && sa->family() != PF_INET)
return ERR_INTERNAL; // no PASV for non-PF_INET connections
+ const KInetSocketAddress *sin = static_cast(sa);
+
if (m_extControl & pasvUnknown)
return ERR_INTERNAL; // already tried and got "unknown command"
@@ -886,14 +888,17 @@ int Ftp::ftpOpenPASVDataConnection()
}
// Make hostname and port number ...
- QString host;
- host.sprintf("%d.%d.%d.%d", i[0], i[1], i[2], i[3]);
int port = i[4] << 8 | i[5];
+ // we ignore the host part on purpose for two reasons
+ // a) it might be wrong anyway
+ // b) it would make us being suceptible to a port scanning attack
+
// now connect the data socket ...
m_data = new FtpSocket("PASV");
- m_data->setAddress(host, port);
- kdDebug(7102) << "Connecting to " << host << " on port " << port << endl;
+ m_data->setAddress(sin->nodeName(), port);
+
+ kdDebug(7102) << "Connecting to " << sin->nodeName() << " on port " << port << endl;
return m_data->connectSocket(connectTimeout(), false);
}