Catch NULL monitor rpc client in cap monitor rpcs.
authorMark Nevill <nevillm@ethz.ch>
Mon, 26 Mar 2012 17:29:16 +0000 (19:29 +0200)
committerSimon Gerber <simon.gerber@inf.ethz.ch>
Thu, 18 Jul 2013 12:58:27 +0000 (14:58 +0200)
errors/errno.fugu
lib/barrelfish/capabilities.c

index 7c50cd3..0824130 100644 (file)
@@ -302,6 +302,7 @@ errors libbarrelfish LIB_ERR_ {
     failure NO_UMP_BIND_HANDLER "UMP connection handler not registered for this service",
     failure MONITOR_CAP_SEND    "Failed sending capability via monitor",
     failure MONITOR_RPC_BIND    "Error in monitor_rpc_init()",
+    failure MONITOR_RPC_NULL    "Monitor RPC client is uninitialized",
 
     // multihop
     failure BIND_MULTIHOP_REQ   "Failed sending bind_multihop_request to monitor",
index 4369183..070d62b 100644 (file)
@@ -158,6 +158,9 @@ static errval_t cap_retype_remote(capaddr_t src, enum objtype new_type,
                                   int dcn_vbits)
 {
     struct monitor_blocking_rpc_client *mrc = get_monitor_blocking_rpc_client();
+    if (!mrc) {
+        return LIB_ERR_MONITOR_RPC_NULL;
+    }
     errval_t err, remote_cap_err;
     int count = 0;
     do {
@@ -188,6 +191,9 @@ static errval_t cap_retype_remote(capaddr_t src, enum objtype new_type,
 static errval_t cap_delete_remote(capaddr_t src, uint8_t vbits)
 {
     struct monitor_blocking_rpc_client *mrc = get_monitor_blocking_rpc_client();
+    if (!mrc) {
+        return LIB_ERR_MONITOR_RPC_NULL;
+    }
     errval_t err, remote_cap_err;
     int count = 0;
     do {
@@ -215,6 +221,9 @@ static errval_t cap_delete_remote(capaddr_t src, uint8_t vbits)
 static errval_t cap_revoke_remote(capaddr_t src, uint8_t vbits)
 {
     struct monitor_blocking_rpc_client *mrc = get_monitor_blocking_rpc_client();
+    if (!mrc) {
+        return LIB_ERR_MONITOR_RPC_NULL;
+    }
     errval_t err, remote_cap_err;
     int count = 0;
     do {