From cb0fbc5f4c719c717208b2a2fb333f0d6b7be98d Mon Sep 17 00:00:00 2001 From: "asqueella@gmail.com" Date: Wed, 25 Apr 2007 13:52:16 -0700 Subject: [PATCH] Bug 376865 - nsInputStreamPump::AsyncRead does not null check listenerp=Ryan Jones r+sr=biesi --- netwerk/base/src/nsInputStreamPump.cpp | 5 ++--- netwerk/test/unit/test_bug376865.js | 23 +++++++++++++++++++++++ 2 files changed, 25 insertions(+), 3 deletions(-) create mode 100644 netwerk/test/unit/test_bug376865.js diff --git a/netwerk/base/src/nsInputStreamPump.cpp b/netwerk/base/src/nsInputStreamPump.cpp index 9b4bc2d625b3..09e776de6927 100644 --- a/netwerk/base/src/nsInputStreamPump.cpp +++ b/netwerk/base/src/nsInputStreamPump.cpp @@ -293,8 +293,7 @@ NS_IMETHODIMP nsInputStreamPump::AsyncRead(nsIStreamListener *listener, nsISupports *ctxt) { NS_ENSURE_TRUE(mState == STATE_IDLE, NS_ERROR_IN_PROGRESS); - - nsresult rv; + NS_ENSURE_ARG_POINTER(listener); // // OK, we need to use the stream transport service if @@ -304,7 +303,7 @@ nsInputStreamPump::AsyncRead(nsIStreamListener *listener, nsISupports *ctxt) // PRBool nonBlocking; - rv = mStream->IsNonBlocking(&nonBlocking); + nsresult rv = mStream->IsNonBlocking(&nonBlocking); if (NS_FAILED(rv)) return rv; if (nonBlocking) { diff --git a/netwerk/test/unit/test_bug376865.js b/netwerk/test/unit/test_bug376865.js new file mode 100644 index 000000000000..90fa1c97f5da --- /dev/null +++ b/netwerk/test/unit/test_bug376865.js @@ -0,0 +1,23 @@ +const Cc = Components.classes; +const Ci = Components.interfaces; + +function run_test() { + var stream = Cc["@mozilla.org/io/string-input-stream;1"]. + createInstance(Ci.nsISupportsCString); + stream.data = "foo bar baz"; + + var pump = Cc["@mozilla.org/network/input-stream-pump;1"]. + createInstance(Ci.nsIInputStreamPump); + pump.init(stream, -1, -1, 0, 0, false); + + // When we pass a null listener argument too asyncRead we expect it to throw + // instead of crashing. + try { + pump.asyncRead(null, null); + } + catch (e) { + return; + } + + do_throw("asyncRead didn't throw when passed a null listener argument."); +}