s3: lib: messages: Don't use the result of sec_init() before calling sec_init().
[metze/samba/wip.git] / source3 / lib / messages.c
index 561616df6e44da9c989f90253cf2fc534a22422c..5a31f3414d74ecc3c4776f7e276905ec1257f84d 100644 (file)
@@ -399,6 +399,11 @@ static void messaging_recv_cb(struct tevent_context *ev,
                  (unsigned)rec.msg_type, rec.buf.length, num_fds,
                  server_id_str_buf(rec.src, &idbuf));
 
+       if (server_id_same_process(&rec.src, &msg_ctx->id)) {
+               DBG_DEBUG("Ignoring self-send\n");
+               goto close_fail;
+       }
+
        messaging_dispatch_rec(msg_ctx, ev, &rec);
        return;
 
@@ -452,6 +457,13 @@ static NTSTATUS messaging_init_internal(TALLOC_CTX *mem_ctx,
        const char *priv_path;
        bool ok;
 
+       /*
+        * sec_init() *must* be called before any other
+        * functions that use sec_XXX(). e.g. sec_initial_uid().
+        */
+
+       sec_init();
+
        lck_path = lock_path("msg.lock");
        if (lck_path == NULL) {
                return NT_STATUS_NO_MEMORY;
@@ -502,8 +514,6 @@ static NTSTATUS messaging_init_internal(TALLOC_CTX *mem_ctx,
                goto done;
        }
 
-       sec_init();
-
        ctx->msg_dgm_ref = messaging_dgm_ref(ctx,
                                             ctx->event_ctx,
                                             &ctx->id.unique_id,