Browse Source

Don't unconditionally deref pub and sub in lint_message_consistency

This can't actually result in a null pointer dereference, since
pub_excl and sub_excl are only set when the corresponding smartlists
are nonempty.  But coverity isn't smart enough to figure that out,
and we shouldn't really be depending on it.

Bug 29938; CID 1444257.  Bug not in any released Tor.
Nick Mathewson 6 years ago
parent
commit
f58587a68d
1 changed files with 2 additions and 2 deletions
  1. 2 2
      src/lib/pubsub/pubsub_check.c

+ 2 - 2
src/lib/pubsub/pubsub_check.c

@@ -303,14 +303,14 @@ lint_message_consistency(message_id_t msg,
   /* Enforce exclusive-ness for publishers and subscribers that have asked for
   /* Enforce exclusive-ness for publishers and subscribers that have asked for
    * it.
    * it.
    */
    */
-  if (pub_excl && smartlist_len(pub) > 1) {
+  if (pub_excl && smartlist_len_opt(pub) > 1) {
     log_warn(LD_MESG|LD_BUG,
     log_warn(LD_MESG|LD_BUG,
              "Message \"%s\" has multiple publishers, but at least one is "
              "Message \"%s\" has multiple publishers, but at least one is "
              "marked as exclusive.",
              "marked as exclusive.",
              get_message_id_name(msg));
              get_message_id_name(msg));
     ok = false;
     ok = false;
   }
   }
-  if (sub_excl && smartlist_len(sub) > 1) {
+  if (sub_excl && smartlist_len_opt(sub) > 1) {
     log_warn(LD_MESG|LD_BUG,
     log_warn(LD_MESG|LD_BUG,
              "Message \"%s\" has multiple subscribers, but at least one is "
              "Message \"%s\" has multiple subscribers, but at least one is "
              "marked as exclusive.",
              "marked as exclusive.",