[CobaltService] Don't read unititialized memory

asan discovered an issue where an unititialized unique_ptr is read, at
which point it may contain garbage pointer data.

Change-Id: Ic68b99a1db28b7f492bda456758eca4b09fd8c5f
diff --git a/src/public/cobalt_service.cc b/src/public/cobalt_service.cc
index 01b8779..42242a5 100644
--- a/src/public/cobalt_service.cc
+++ b/src/public/cobalt_service.cc
@@ -121,21 +121,27 @@
           &logger_encoder_, event_aggregator_manager_.GetEventAggregator(), &observation_writer_,
           &system_data_)),
       validated_clock_(cfg.validated_clock),
-      internal_logger_(NewLogger(std::move(cfg.internal_logger_project_context))) {
+      internal_logger_(NewLogger(std::move(cfg.internal_logger_project_context), false)) {
   shipping_manager_->Start();
 }
 
 std::unique_ptr<logger::Logger> CobaltService::NewLogger(
     std::unique_ptr<logger::ProjectContext> project_context) {
+  return NewLogger(std::move(project_context), true);
+}
+
+std::unique_ptr<logger::Logger> CobaltService::NewLogger(
+    std::unique_ptr<logger::ProjectContext> project_context, bool include_internal_logger) {
+  auto logger = include_internal_logger ? internal_logger_.get() : nullptr;
   if (undated_event_manager_) {
-    return std::make_unique<logger::Logger>(
-        std::move(project_context), &logger_encoder_,
-        event_aggregator_manager_.GetEventAggregator(), &observation_writer_, &system_data_,
-        validated_clock_.get(), undated_event_manager_, internal_logger_.get());
+    return std::make_unique<logger::Logger>(std::move(project_context), &logger_encoder_,
+                                            event_aggregator_manager_.GetEventAggregator(),
+                                            &observation_writer_, &system_data_,
+                                            validated_clock_.get(), undated_event_manager_, logger);
   }
-  return std::make_unique<logger::Logger>(
-      std::move(project_context), &logger_encoder_, event_aggregator_manager_.GetEventAggregator(),
-      &observation_writer_, &system_data_, internal_logger_.get());
+  return std::make_unique<logger::Logger>(std::move(project_context), &logger_encoder_,
+                                          event_aggregator_manager_.GetEventAggregator(),
+                                          &observation_writer_, &system_data_, logger);
 }
 
 void CobaltService::SystemClockIsAccurate(std::unique_ptr<util::SystemClockInterface> system_clock,
diff --git a/src/public/cobalt_service.h b/src/public/cobalt_service.h
index 625eef0..9dd3939 100644
--- a/src/public/cobalt_service.h
+++ b/src/public/cobalt_service.h
@@ -54,6 +54,11 @@
   std::unique_ptr<logger::Logger> NewLogger(
       std::unique_ptr<logger::ProjectContext> project_context);
 
+ private:
+  std::unique_ptr<logger::Logger> NewLogger(std::unique_ptr<logger::ProjectContext> project_context,
+                                            bool include_internal_logger);
+
+ public:
   // SystemClockIsAccurate lets CobaltService know that it no longer needs to maintain an
   // UndatedEventManager, and can flush the data from it into the observation store.
   //