Bug 1418164 - Don't leave uninitialized values lying around. r=froydnj draft
authorBlake Kaplan <mrbkap@gmail.com>
Thu, 16 Nov 2017 17:54:57 -0800
changeset 699348 bac5ab2e744d50efa6a0bbca27263bf6d4d1eb28
parent 697417 c9f889585dd884a692064b8c9a9e3ad1d1deb308
child 740601 0206d6d5314cb2a6f56eb1a09c5da7dc5f9fa1c0
push id89538
push userbmo:mrbkap@mozilla.com
push dateFri, 17 Nov 2017 02:08:05 +0000
reviewersfroydnj
bugs1418164
milestone59.0a1
Bug 1418164 - Don't leave uninitialized values lying around. r=froydnj The users of WriteSegmentFun and ReadSegmentFun read the final out parameter whether or not the function returns an error. We should make sure to fill it in with a sane value. MozReview-Commit-ID: GWDS8gENUMB
xpcom/io/nsStreamUtils.cpp
--- a/xpcom/io/nsStreamUtils.cpp
+++ b/xpcom/io/nsStreamUtils.cpp
@@ -739,17 +739,18 @@ TestInputStream(nsIInputStream* aInStr,
                 void* aClosure,
                 const char* aBuffer,
                 uint32_t aOffset,
                 uint32_t aCount,
                 uint32_t* aCountWritten)
 {
   bool* result = static_cast<bool*>(aClosure);
   *result = true;
-  return NS_ERROR_ABORT;  // don't call me anymore
+  *aCountWritten = 0;
+  return NS_ERROR_ABORT; // don't call me anymore
 }
 
 bool
 NS_InputStreamIsBuffered(nsIInputStream* aStream)
 {
   nsCOMPtr<nsIBufferedInputStream> bufferedIn = do_QueryInterface(aStream);
   if (bufferedIn) {
     return true;
@@ -766,17 +767,18 @@ TestOutputStream(nsIOutputStream* aOutSt
                  void* aClosure,
                  char* aBuffer,
                  uint32_t aOffset,
                  uint32_t aCount,
                  uint32_t* aCountRead)
 {
   bool* result = static_cast<bool*>(aClosure);
   *result = true;
-  return NS_ERROR_ABORT;  // don't call me anymore
+  *aCountRead = 0;
+  return NS_ERROR_ABORT; // don't call me anymore
 }
 
 bool
 NS_OutputStreamIsBuffered(nsIOutputStream* aStream)
 {
   nsCOMPtr<nsIBufferedOutputStream> bufferedOut = do_QueryInterface(aStream);
   if (bufferedOut) {
     return true;