[sheepdog-users] [PATCH stable-0.8 07/22] ops: add NULL check of req->op

Hitoshi Mitake mitake.hitoshi at lab.ntt.co.jp
Mon Feb 24 08:06:55 CET 2014


From: MORITA Kazutaka <morita.kazutaka at lab.ntt.co.jp>

req->op can be NULL when the requested opcode is invalid.  It's safe
to add NULL checks before accessing req->op in ops.c.

Signed-off-by: MORITA Kazutaka <morita.kazutaka at lab.ntt.co.jp>
Signed-off-by: Liu Yuan <namei.unix at gmail.com>
---
 sheep/ops.c |   19 +++++++++++--------
 1 file changed, 11 insertions(+), 8 deletions(-)

diff --git a/sheep/ops.c b/sheep/ops.c
index ccc3fff..113fc86 100644
--- a/sheep/ops.c
+++ b/sheep/ops.c
@@ -1363,47 +1363,50 @@ const struct sd_op_template *get_sd_op(uint8_t opcode)
 
 const char *op_name(const struct sd_op_template *op)
 {
+	if (op == NULL)
+		return "(invalid opcode)";
+
 	return op->name;
 }
 
 bool is_cluster_op(const struct sd_op_template *op)
 {
-	return op->type == SD_OP_TYPE_CLUSTER;
+	return op != NULL && op->type == SD_OP_TYPE_CLUSTER;
 }
 
 bool is_local_op(const struct sd_op_template *op)
 {
-	return op->type == SD_OP_TYPE_LOCAL;
+	return op != NULL && op->type == SD_OP_TYPE_LOCAL;
 }
 
 bool is_peer_op(const struct sd_op_template *op)
 {
-	return op->type == SD_OP_TYPE_PEER;
+	return op != NULL && op->type == SD_OP_TYPE_PEER;
 }
 
 bool is_gateway_op(const struct sd_op_template *op)
 {
-	return op->type == SD_OP_TYPE_GATEWAY;
+	return op != NULL && op->type == SD_OP_TYPE_GATEWAY;
 }
 
 bool is_force_op(const struct sd_op_template *op)
 {
-	return !!op->force;
+	return op != NULL && op->force;
 }
 
 bool is_logging_op(const struct sd_op_template *op)
 {
-	return !!op->is_admin_op;
+	return op != NULL && op->is_admin_op;
 }
 
 bool has_process_work(const struct sd_op_template *op)
 {
-	return !!op->process_work;
+	return op != NULL && !!op->process_work;
 }
 
 bool has_process_main(const struct sd_op_template *op)
 {
-	return !!op->process_main;
+	return op != NULL && !!op->process_main;
 }
 
 void do_process_work(struct work *work)
-- 
1.7.10.4




More information about the sheepdog-users mailing list