Fix applying REPLACE_XZ operation when verifying payload.

xz-embedded needs to initialize crc32 table.

Also changed the exit code to 1 if ApplyPayload fail.

BUG=none
TEST=brillo_update_payload verify

Change-Id: I1717b7463f7118bb94da2b780e0106995451b68f
(cherry picked from commit 8adc1ad36359b2e5b0a0d599409589d625064574)
Reviewed-on: https://chromium-review.googlesource.com/638554
Commit-Ready: Amin Hassani <ahassani@chromium.org>
Tested-by: Amin Hassani <ahassani@chromium.org>
Reviewed-by: Ben Chan <benchan@chromium.org>
Reviewed-by: Sen Jiang <senj@chromium.org>
diff --git a/payload_generator/generate_delta_main.cc b/payload_generator/generate_delta_main.cc
index d93313f..7524cc9 100644
--- a/payload_generator/generate_delta_main.cc
+++ b/payload_generator/generate_delta_main.cc
@@ -19,6 +19,7 @@
 #include <sys/stat.h>
 #include <sys/types.h>
 #include <unistd.h>
+#include <xz.h>
 
 #include <string>
 #include <vector>
@@ -235,6 +236,7 @@
   int fd = open(payload_file.c_str(), O_RDONLY, 0);
   CHECK_GE(fd, 0);
   ScopedFdCloser fd_closer(&fd);
+  xz_crc32_init();
   for (off_t offset = 0;; offset += buf.size()) {
     ssize_t bytes_read;
     CHECK(utils::PReadAll(fd, buf.data(), buf.size(), offset, &bytes_read));
@@ -501,8 +503,7 @@
   }
 
   if (!FLAGS_in_file.empty()) {
-    ApplyPayload(FLAGS_in_file, payload_config);
-    return 0;
+    return ApplyPayload(FLAGS_in_file, payload_config) ? 0 : 1;
   }
 
   if (!FLAGS_new_postinstall_config_file.empty()) {