Browse Source

Merge remote-tracking branch 'tor-github/pr/1612' into maint-0.4.2

Nick Mathewson 4 years ago
parent
commit
6da989cfe8
4 changed files with 14 additions and 4 deletions
  1. 4 0
      changes/bug32771
  2. 4 0
      changes/ticket32765
  3. 2 2
      src/lib/confmgt/structvar.c
  4. 4 2
      src/lib/log/util_bug.h

+ 4 - 0
changes/bug32771

@@ -0,0 +1,4 @@
+  o Minor bugfixes (logging, crash):
+    - Avoid a possible crash when trying to log a (fatal) assertion failure
+      about mismatched magic numbers in configuration objects. Fixes bug 32771;
+      bugfix on 0.4.2.1-alpha.

+ 4 - 0
changes/ticket32765

@@ -0,0 +1,4 @@
+  o Minor bugfixes (correctness checks):
+    - Use GCC/Clang's printf-checking feature to make sure that
+      tor_assertf() arguments are correctly typed. Fixes bug 32765;
+      bugfix on 0.4.1.1-alpha.

+ 2 - 2
src/lib/confmgt/structvar.c

@@ -53,8 +53,8 @@ struct_check_magic(const void *object, const struct_magic_decl_t *decl)
   const uint32_t *ptr = STRUCT_VAR_P(object, decl->magic_offset);
   tor_assertf(*ptr == decl->magic_val,
               "Bad magic number on purported %s object. "
-              "Expected %"PRIu32"x but got "PRIu32"x.",
-              decl->magic_val, *ptr);
+              "Expected %"PRIu32"x but got %"PRIu32"x.",
+              decl->typename, decl->magic_val, *ptr);
 }
 
 /**

+ 4 - 2
src/lib/log/util_bug.h

@@ -242,10 +242,12 @@
 
 void tor_assertion_failed_(const char *fname, unsigned int line,
                            const char *func, const char *expr,
-                           const char *fmt, ...);
+                           const char *fmt, ...)
+    CHECK_PRINTF(5,6);
 void tor_bug_occurred_(const char *fname, unsigned int line,
                        const char *func, const char *expr,
-                       int once, const char *fmt, ...);
+                       int once, const char *fmt, ...)
+  CHECK_PRINTF(6,7);
 
 void tor_abort_(void) ATTR_NORETURN;