[spp] [PATCH 14/57] spp_vf: fix return value overwrite problem

x-fn-spp at sl.ntt-tx.co.jp x-fn-spp at sl.ntt-tx.co.jp
Thu Dec 28 05:55:21 CET 2017


From: Hiroyuki Nakamura <nakamura.hioryuki at po.ntt-tx.co.jp>

Add new variable for saving the return value of receive_message()
to avoid overwrite problem.

Signed-off-by: Kentaro Watanabe <watanabe.kentaro.z01 at as.ntt-tx.co.jp>
Signed-off-by: Yasufum Ogawa <ogawa.yasufumi at lab.ntt.co.jp>
---
 src/vf/command_proc.c | 10 +++++++---
 1 file changed, 7 insertions(+), 3 deletions(-)

diff --git a/src/vf/command_proc.c b/src/vf/command_proc.c
index d8e7fd1..3ec4f5b 100644
--- a/src/vf/command_proc.c
+++ b/src/vf/command_proc.c
@@ -749,6 +749,7 @@ void
 spp_command_proc_do(void)
 {
 	int ret = -1;
+	int msg_ret = -1;
 	int i;
 
 	static int sock = -1;
@@ -765,12 +766,12 @@ spp_command_proc_do(void)
 	if (unlikely(ret != 0))
 		return;
 
-	ret = receive_message(&sock, &msgbuf);
-	if (likely(ret == 0)) {
+	msg_ret = receive_message(&sock, &msgbuf);
+	if (likely(msg_ret == 0)) {
 		return;
 	}
 
-	for (i = 0; i < ret; ++i) {
+	for (i = 0; i < msg_ret; ++i) {
 		switch (*(msgbuf + msg_len + i)) {
 		case '{':
 			++lb_cnt;
@@ -785,9 +786,12 @@ spp_command_proc_do(void)
 			ret = process_request(msgbuf, msg_len);
 
 			msgbuf_remove_front(msgbuf, msg_len);
+			msg_ret = 0;
 			msg_len = 0;
 			rb_cnt = 0;
 			lb_cnt = 0;
 		}
 	}
+
+	msg_len = msg_len + msg_ret;
 }
-- 
1.9.1



More information about the spp mailing list