]> git.ipfire.org Git - thirdparty/krb5.git/commitdiff
Avoid side effects in assert expressions
authorGreg Hudson <ghudson@mit.edu>
Fri, 9 Mar 2012 18:30:31 +0000 (18:30 +0000)
committerTom Yu <tlyu@mit.edu>
Fri, 11 Jan 2013 20:31:35 +0000 (15:31 -0500)
asserts may be compiled out with -DNDEBUG, so it's wrong to use an
assert expression with an important side effect.

(We also have scores of side-effecting asserts in test programs, but
those are less important and can be dealt with separately.)

(cherry picked from commit 221cd4a23691601a14500bc00146c265b50bdc94)

ticket: 7542 (new)
version_fixed: 1.10.4
status: resolved

src/lib/apputils/net-server.c
src/lib/crypto/krb/cf2.c
src/util/et/com_err.c

index 43be27c95141ab46fe35d152972fc5ee5e3c95ef..ba4d2160e1787738078af9a38b8c512aa774e7d7 100644 (file)
@@ -1103,7 +1103,10 @@ static void
 do_network_reconfig(verto_ctx *ctx, verto_ev *ev)
 {
     struct connection *conn = verto_get_private(ev);
-    assert(loop_setup_network(ctx, conn->handle, conn->prog) == 0);
+    if (loop_setup_network(ctx, conn->handle, conn->prog) != 0) {
+        krb5_klog_syslog(LOG_ERR, _("Failed to reconfigure network, exiting"));
+        verto_break(ctx);
+    }
 }
 
 static int
index 5f82d62afd66723d77f3f955bf9c15cc79588f6d..7334ed168d966e803bb61b9fd655d3fec6455193 100644 (file)
@@ -107,7 +107,8 @@ krb5_c_fx_cf2_simple(krb5_context context,
         return KRB5_BAD_ENCTYPE;
     out_enctype_num = k1->enctype;
     assert(out != NULL);
-    assert((out_enctype = find_enctype(out_enctype_num)) != NULL);
+    out_enctype = find_enctype(out_enctype_num);
+    assert(out_enctype != NULL);
     if (out_enctype->prf == NULL) {
         if (context)
             krb5int_set_error(&(context->err), KRB5_CRYPTO_INTERNAL,
index aaba89744f792216b39be21dd2d37dd55f318d9c..96922ec24f49de581d86f340b2ca81f67b3196c5 100644 (file)
@@ -154,8 +154,10 @@ et_old_error_hook_func set_com_err_hook (et_old_error_hook_func new_proc)
     et_old_error_hook_func x;
 
     /* Broken initialization?  What can we do?  */
-    assert(com_err_finish_init() == 0);
-    assert(com_err_lock_hook_handle() == 0);
+    if (com_err_finish_init() != 0)
+        abort();
+    if (com_err_lock_hook_handle() != 0)
+        abort();
     x = com_err_hook;
     com_err_hook = new_proc;
     k5_mutex_unlock(&com_err_hook_lock);
@@ -167,8 +169,10 @@ et_old_error_hook_func reset_com_err_hook ()
     et_old_error_hook_func x;
 
     /* Broken initialization?  What can we do?  */
-    assert(com_err_finish_init() == 0);
-    assert(com_err_lock_hook_handle() == 0);
+    if (com_err_finish_init() != 0)
+        abort();
+    if (com_err_lock_hook_handle() != 0)
+        abort();
     x = com_err_hook;
     com_err_hook = NULL;
     k5_mutex_unlock(&com_err_hook_lock);