Extract LOG_ID_MIN/MAX checks to a helper function. am: 163c599ffd am: e41177e3a6

Original change: https://android-review.googlesource.com/c/platform/system/logging/+/3368512

Change-Id: I2af3c6ade6e920b6f01b745f0d2eda9184c12e74
Signed-off-by: Automerger Merge Worker <[email protected]>
diff --git a/liblog/include/android/log.h b/liblog/include/android/log.h
index e203f27..218ef2c 100644
--- a/liblog/include/android/log.h
+++ b/liblog/include/android/log.h
@@ -55,6 +55,7 @@
  */
 
 #include <stdarg.h>
+#include <stdbool.h>
 #include <stddef.h>
 #include <stdint.h>
 #include <sys/cdefs.h>
@@ -170,6 +171,10 @@
   LOG_ID_DEFAULT = 0x7FFFFFFF
 } log_id_t;
 
+static inline bool __android_log_id_is_valid(log_id_t id) {
+  return id >= LOG_ID_MIN && id < LOG_ID_MAX;
+}
+
 /**
  * Writes the constant string `text` to the log buffer `id`,
  * with priority `prio` and tag `tag`.
diff --git a/liblog/logger_name.cpp b/liblog/logger_name.cpp
index e72290e..afab5e3 100644
--- a/liblog/logger_name.cpp
+++ b/liblog/logger_name.cpp
@@ -34,7 +34,7 @@
 };
 
 const char* android_log_id_to_name(log_id_t log_id) {
-  if (log_id >= LOG_ID_MAX) {
+  if (!__android_log_id_is_valid(log_id)) {
     log_id = LOG_ID_MAIN;
   }
   return LOG_NAME[log_id];
diff --git a/liblog/logger_read.cpp b/liblog/logger_read.cpp
index 4937042..4675c60 100644
--- a/liblog/logger_read.cpp
+++ b/liblog/logger_read.cpp
@@ -61,14 +61,14 @@
 }
 
 /* Open the named log and add it to the logger list */
-struct logger* android_logger_open(struct logger_list* logger_list, log_id_t logId) {
-  if (!logger_list || (logId >= LOG_ID_MAX)) {
+struct logger* android_logger_open(struct logger_list* logger_list, log_id_t log_id) {
+  if (!logger_list || !__android_log_id_is_valid(log_id)) {
     return nullptr;
   }
 
-  logger_list->log_mask |= 1 << logId;
+  logger_list->log_mask |= 1 << log_id;
 
-  uintptr_t logger = logId;
+  uintptr_t logger = log_id;
   logger |= (logger_list->mode & ANDROID_LOG_PSTORE) ? LOGGER_PMSG : LOGGER_LOGD;
   return reinterpret_cast<struct logger*>(logger);
 }
diff --git a/liblog/pmsg_reader.cpp b/liblog/pmsg_reader.cpp
index 4d603db..72da5a8 100644
--- a/liblog/pmsg_reader.cpp
+++ b/liblog/pmsg_reader.cpp
@@ -78,7 +78,8 @@
       return preread_count ? -EIO : -EAGAIN;
     }
     if ((buf.p.magic != LOGGER_MAGIC) || (buf.p.len <= sizeof(buf)) ||
-        (buf.p.len > (sizeof(buf) + LOGGER_ENTRY_MAX_PAYLOAD)) || (buf.l.id >= LOG_ID_MAX) ||
+        (buf.p.len > (sizeof(buf) + LOGGER_ENTRY_MAX_PAYLOAD)) ||
+        !__android_log_id_is_valid(static_cast<log_id_t>(buf.l.id)) ||
         (buf.l.realtime.tv_nsec >= NS_PER_SEC) ||
         ((buf.l.id != LOG_ID_EVENTS) && (buf.l.id != LOG_ID_SECURITY) &&
          ((buf.prio == ANDROID_LOG_UNKNOWN) || (buf.prio == ANDROID_LOG_DEFAULT) ||
diff --git a/logcat/logcat.cpp b/logcat/logcat.cpp
index c8fcf46..7e79c6d 100644
--- a/logcat/logcat.cpp
+++ b/logcat/logcat.cpp
@@ -831,7 +831,7 @@
                         id_mask = -1;
                     } else {
                         log_id_t log_id = android_name_to_log_id(buffer.c_str());
-                        if (log_id >= LOG_ID_MAX) {
+                        if (!__android_log_id_is_valid(log_id)) {
                             error(EXIT_FAILURE, 0, "Unknown -b buffer '%s'.", buffer.c_str());
                         }
                         if (log_id == LOG_ID_SECURITY) {
@@ -1194,9 +1194,8 @@
             error(EXIT_FAILURE, errno, "Logcat read failure");
         }
 
-        if (log_msg.id() > LOG_ID_MAX) {
-            error(EXIT_FAILURE, 0, "Unexpected log id (%d) over LOG_ID_MAX (%d).", log_msg.id(),
-                  LOG_ID_MAX);
+        if (!__android_log_id_is_valid(static_cast<log_id_t>(log_msg.id()))) {
+            error(EXIT_FAILURE, 0, "Unexpected log id (%d) out of bounds.", log_msg.id());
         }
 
         if (!uids.empty() && uids.count(log_msg.entry.uid) == 0) {
diff --git a/logd/CommandListener.cpp b/logd/CommandListener.cpp
index 0ba1621..ff1d34c 100644
--- a/logd/CommandListener.cpp
+++ b/logd/CommandListener.cpp
@@ -178,7 +178,7 @@
             }
 
             int id = atoi(argv[i]);
-            if ((id < LOG_ID_MIN) || (LOG_ID_MAX <= id)) {
+            if (!__android_log_id_is_valid(static_cast<log_id_t>(id))) {
                 cli->sendMsg("Range Error");
                 return 0;
             }
diff --git a/logd/LogListener.cpp b/logd/LogListener.cpp
index 182567d..4e94651 100644
--- a/logd/LogListener.cpp
+++ b/logd/LogListener.cpp
@@ -98,8 +98,7 @@
     android_log_header_t* header =
         reinterpret_cast<android_log_header_t*>(buffer);
     log_id_t logId = static_cast<log_id_t>(header->id);
-    if (/* logId < LOG_ID_MIN || */ logId >= LOG_ID_MAX ||
-        logId == LOG_ID_KERNEL) {
+    if (!__android_log_id_is_valid(logId) || logId == LOG_ID_KERNEL) {
         return;
     }
 
diff --git a/logd/SerializedLogBuffer.cpp b/logd/SerializedLogBuffer.cpp
index 75ba845..a197f48 100644
--- a/logd/SerializedLogBuffer.cpp
+++ b/logd/SerializedLogBuffer.cpp
@@ -135,7 +135,7 @@
 
 int SerializedLogBuffer::Log(log_id_t log_id, log_time realtime, uid_t uid, pid_t pid, pid_t tid,
                              const char* msg, uint16_t len) {
-    if (log_id >= LOG_ID_MAX || len == 0) {
+    if (!__android_log_id_is_valid(log_id) || len == 0) {
         return -EINVAL;
     }
 
diff --git a/logd/SimpleLogBuffer.cpp b/logd/SimpleLogBuffer.cpp
index f492a40..443e977 100644
--- a/logd/SimpleLogBuffer.cpp
+++ b/logd/SimpleLogBuffer.cpp
@@ -80,7 +80,7 @@
 
 int SimpleLogBuffer::Log(log_id_t log_id, log_time realtime, uid_t uid, pid_t pid, pid_t tid,
                          const char* msg, uint16_t len) {
-    if (log_id >= LOG_ID_MAX) {
+    if (!__android_log_id_is_valid(log_id)) {
         return -EINVAL;
     }