fix ubsan-detected UMR in TemporaryFile
authorLouis Brandy <ldbrandy@fb.com>
Thu, 7 Dec 2017 01:10:31 +0000 (17:10 -0800)
committerFacebook Github Bot <facebook-github-bot@users.noreply.github.com>
Thu, 7 Dec 2017 01:21:26 +0000 (17:21 -0800)
Summary:
Move constructors are just like any other constructors. `this` is not in a valid state. You aren't supposed to destroy `this` before move-constructing it.

This was detected by ubsan stress runs.

UBSAN report:

```
[ RUN      ] TemporaryFile.moveCtor
folly/experimental/TestUtil.cpp:91:20: runtime error: load of value 3, which is not a valid value for type 'bool'
 [ failed: 1 ]
 ````

Reviewed By: yfeldblum

Differential Revision: D6501500

fbshipit-source-id: 83bd0525ac2c1f5951f70f5596034bb6cb0ca985

folly/experimental/TestUtil.h

index 1b8e339da511457f7d5779b04a66d0402b5a688c..dc75069a9f297b7753db0b5646960d240f2723e0 100644 (file)
@@ -52,7 +52,6 @@ class TemporaryFile {
 
   // Movable, but not copyable
   TemporaryFile(TemporaryFile&& other) noexcept {
-    reset();
     assign(other);
   }