Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit c18f3102 authored by Mark Salyzyn's avatar Mark Salyzyn
Browse files

liblog: adapt to removal of property name size limit

There is no longer a name size limit to the properties.

Test: gTest liblog-unit-tests, logd-unit-tests and logcat-unit-tests
Test: liblog-benchmarks BM_is_loggable
Bug: 36696208
Change-Id: I80706a48583192b21f532a06cb8fa183a34e5f76
parent 9cadfde2
Loading
Loading
Loading
Loading
+20 −15
Original line number Diff line number Diff line
@@ -95,7 +95,7 @@ static int __android_log_level(const char* tag, size_t len, int default_prio) {
  /* calculate the size of our key temporary buffer */
  const size_t taglen = tag ? len : 0;
  /* sizeof(log_namespace) = strlen(log_namespace) + 1 */
  char key[sizeof(log_namespace) + taglen]; /* may be > PROP_NAME_MAX */
  char key[sizeof(log_namespace) + taglen];
  char* kp;
  size_t i;
  char c = 0;
@@ -108,7 +108,8 @@ static int __android_log_level(const char* tag, size_t len, int default_prio) {
   * Where the missing tag matches all tags and becomes the
   * system global default. We do not support ro.log.tag* .
   */
  static char last_tag[PROP_NAME_MAX];
  static char* last_tag;
  static size_t last_tag_len;
  static uint32_t global_serial;
  /* some compilers erroneously see uninitialized use. !not_locked */
  uint32_t current_global_serial = 0;
@@ -147,25 +148,29 @@ static int __android_log_level(const char* tag, size_t len, int default_prio) {
  if (taglen) {
    int local_change_detected = change_detected;
    if (!not_locked) {
      if (!last_tag[0] || (last_tag[0] != tag[0]) ||
          strncmp(
              last_tag + 1, tag + 1,
              (len < sizeof(last_tag)) ? (len - 1) : (sizeof(last_tag) - 1)) ||
          ((len < sizeof(last_tag)) && last_tag[len])) {
      if (!last_tag || !last_tag[0] || (last_tag[0] != tag[0]) ||
          strncmp(last_tag + 1, tag + 1, last_tag_len - 1)) {
        /* invalidate log.tag.<tag> cache */
        for (i = 0; i < (sizeof(tag_cache) / sizeof(tag_cache[0])); ++i) {
          tag_cache[i].cache.pinfo = NULL;
          tag_cache[i].c = '\0';
        }
        last_tag[0] = '\0';
        if (last_tag) last_tag[0] = '\0';
        local_change_detected = 1;
      }
      if (!last_tag[0]) {
        if (len < sizeof(last_tag)) {
      if (!last_tag || !last_tag[0]) {
        if (!last_tag) {
          last_tag = calloc(1, len + 1);
          last_tag_len = 0;
          if (last_tag) last_tag_len = len + 1;
        } else if (len >= last_tag_len) {
          last_tag = realloc(last_tag, len + 1);
          last_tag_len = 0;
          if (last_tag) last_tag_len = len + 1;
        }
        if (last_tag) {
          strncpy(last_tag, tag, len);
          last_tag[len] = '\0';
        } else {
          strncpy(last_tag, tag, sizeof(last_tag));
        }
      }
    }
@@ -435,7 +440,7 @@ LIBLOG_ABI_PRIVATE bool __android_logger_property_get_bool(const char* key,
                                                           int flag) {
  struct cache_property property = { { NULL, -1 }, { 0 } };
  if (flag & BOOL_DEFAULT_FLAG_PERSIST) {
    char newkey[PROP_NAME_MAX];
    char newkey[strlen("persist.") + strlen(key) + 1];
    snprintf(newkey, sizeof(newkey), "ro.%s", key);
    refresh_cache_property(&property, newkey);
    property.cache.pinfo = NULL;
@@ -600,8 +605,8 @@ LIBLOG_ABI_PRIVATE unsigned long __android_logger_get_buffer_size(log_id_t logId
    evaluate_property_get_size
    /* clang-format on */
  };
  char key_persist[PROP_NAME_MAX];
  char key_ro[PROP_NAME_MAX];
  char key_persist[strlen(global_tunable) + strlen(".security") + 1];
  char key_ro[strlen(global_default) + strlen(".security") + 1];
  struct cache2_property_size local = {
    /* clang-format off */
    PTHREAD_MUTEX_INITIALIZER, 0,