Fix division by zero in hwcomposer

Bug: 79886305
Test: run locally
Change-Id: I4a17cc7230cebdf7db1d78ed5a0ef37db1ecabb1
diff --git a/guest/hals/hwcomposer/legacy/base_composer.cpp b/guest/hals/hwcomposer/legacy/base_composer.cpp
index 8fae703..a0266c5 100644
--- a/guest/hals/hwcomposer/legacy/base_composer.cpp
+++ b/guest/hals/hwcomposer/legacy/base_composer.cpp
@@ -62,6 +62,10 @@
 
 int BaseComposer::PostFrameBufferTarget(buffer_handle_t buffer_handle) {
   int fb_index = NextScreenBuffer();
+  if (fb_index < 0) {
+    ALOGE("Could not get the next buffer. Is the screen region large enough?");
+    return -1;
+  }
   auto screen_view = ScreenRegionView::GetInstance();
   void* frame_buffer = screen_view->GetBuffer(fb_index);
   const private_handle_t* p_handle =
@@ -100,8 +104,9 @@
 }
 
 int BaseComposer::NextScreenBuffer() {
-  last_frame_buffer_ = (last_frame_buffer_ + 1) %
-                       ScreenRegionView::GetInstance()->number_of_buffers();
+  int num_buffers = ScreenRegionView::GetInstance()->number_of_buffers();
+  last_frame_buffer_ =
+      num_buffers > 0 ? (last_frame_buffer_ + 1) % num_buffers : -1;
   return last_frame_buffer_;
 }
 
diff --git a/guest/hals/hwcomposer/legacy/base_composer.h b/guest/hals/hwcomposer/legacy/base_composer.h
index 4d4bd2d..9e8d10c 100644
--- a/guest/hals/hwcomposer/legacy/base_composer.h
+++ b/guest/hals/hwcomposer/legacy/base_composer.h
@@ -48,7 +48,7 @@
   const gralloc_module_t* gralloc_module_;
   int64_t vsync_base_timestamp_;
   int32_t vsync_period_ns_;
-  int last_frame_buffer_ = -1; // The first index whill be 0
+  int last_frame_buffer_ = -1; // The first index will be 0
 
  private:
   // Returns buffer offset or negative on error.