diff --git a/quiz.module b/quiz.module
index abe1c64..712a362 100644
--- a/quiz.module
+++ b/quiz.module
@@ -1084,10 +1084,16 @@ function quiz_take_page($quiz) {
 /**
  * Does the current user have access to take the quiz?
  *
- * Wrapper for quiz_access().
+ * Wrapper for quiz_access() and menu access callback.
+ *
+ * @param $node
+ *   The quiz node.
+ *
+ * @return bool
  */
 function quiz_take_access($node) {
-  return quiz_access('take', $node);
+  $available = quiz_access('take', $node);
+  return !empty($available['success']);
 }
 
 /**
@@ -2278,7 +2284,7 @@ function quiz_quiz_access($op = 'take', $quiz, $account) {
   // Check permission and node access.
   if (!user_access('access quiz') || !node_access('view', $quiz)) {
     $hooks['node_perm_access'] = array(
-      'success' => TRUE,
+      'success' => FALSE,
       'message' => t('You are not allowed to take this @quiz.', array('@quiz' => QUIZ_NAME)),
     );
   }
