AU: Cleanup temporary files created by the update generator.

BUG=chromium-os:18927
TEST=unit tests, tested an update through dev server

Change-Id: I635fa17b2f95323d30d88ac13573b04a0ebca041
Reviewed-on: http://gerrit.chromium.org/gerrit/6830
Tested-by: Darin Petkov <petkov@chromium.org>
Reviewed-by: Andrew de los Reyes <adlr@chromium.org>
diff --git a/delta_diff_generator.cc b/delta_diff_generator.cc
index d4ebc4e..5c5b2ef 100644
--- a/delta_diff_generator.cc
+++ b/delta_diff_generator.cc
@@ -18,6 +18,7 @@
 #include <vector>
 
 #include <base/logging.h>
+#include <base/memory/scoped_ptr.h>
 #include <base/string_util.h>
 #include <bzlib.h>
 
@@ -1318,6 +1319,7 @@
 
   const string kTempFileTemplate("/tmp/CrAU_temp_data.XXXXXX");
   string temp_file_path;
+  scoped_ptr<ScopedPathUnlinker> temp_file_unlinker;
   off_t data_file_size = 0;
 
   LOG(INFO) << "Reading files...";
@@ -1330,6 +1332,7 @@
     int fd;
     TEST_AND_RETURN_FALSE(
         utils::MakeTempFile(kTempFileTemplate, &temp_file_path, &fd));
+    temp_file_unlinker.reset(new ScopedPathUnlinker(temp_file_path));
     TEST_AND_RETURN_FALSE(fd >= 0);
     ScopedFdCloser fd_closer(&fd);
     if (!old_image.empty()) {
@@ -1426,9 +1429,11 @@
       "/tmp/CrAU_temp_data.ordered.XXXXXX",
       &ordered_blobs_path,
       NULL));
+  ScopedPathUnlinker ordered_blobs_unlinker(ordered_blobs_path);
   TEST_AND_RETURN_FALSE(ReorderDataBlobs(&manifest,
                                          temp_file_path,
                                          ordered_blobs_path));
+  temp_file_unlinker.reset();
 
   // Check that install op blobs are in order.
   uint64_t next_blob_offset = 0;