[sr-dev] git:master:702630b4: imc: reserve last char in global buffer for ending zero

Daniel-Constantin Mierla miconda at gmail.com
Tue May 12 18:02:12 CEST 2020


Module: kamailio
Branch: master
Commit: 702630b484ac6f7c017829c24294ce7552f1682a
URL: https://github.com/kamailio/kamailio/commit/702630b484ac6f7c017829c24294ce7552f1682a

Author: Daniel-Constantin Mierla <miconda at gmail.com>
Committer: Daniel-Constantin Mierla <miconda at gmail.com>
Date: 2020-05-12T18:01:15+02:00

imc: reserve last char in global buffer for ending zero

---

Modified: src/modules/imc/imc_cmd.c

---

Diff:  https://github.com/kamailio/kamailio/commit/702630b484ac6f7c017829c24294ce7552f1682a.diff
Patch: https://github.com/kamailio/kamailio/commit/702630b484ac6f7c017829c24294ce7552f1682a.patch

---

diff --git a/src/modules/imc/imc_cmd.c b/src/modules/imc/imc_cmd.c
index 757b17b342..bf68967d21 100644
--- a/src/modules/imc/imc_cmd.c
+++ b/src/modules/imc/imc_cmd.c
@@ -960,7 +960,8 @@ int imc_handle_members(struct sip_msg* msg, imc_cmd_t *cmd,
 	}
 
 	p = imc_body_buf;
-	left = sizeof(imc_body_buf);
+	imc_body_buf[IMC_BUF_SIZE - 1] = '\0';
+	left = sizeof(imc_body_buf) - 1;
 
 	memcpy(p, MEMBERS, sizeof(MEMBERS) - 1);
 	p += sizeof(MEMBERS) - 1;
@@ -975,22 +976,22 @@ int imc_handle_members(struct sip_msg* msg, imc_cmd_t *cmd,
 		}
 
 		if (imp->flags & IMC_MEMBER_OWNER) {
-			if (left < 1) goto overrun;
+			if (left < 2) goto overrun;
 			*p++ = '*';
 			left--;
 		} else if (imp->flags & IMC_MEMBER_ADMIN) {
-			if (left < 1) goto overrun;
+			if (left < 2) goto overrun;
 			*p++ = '~';
 			left--;
 		}
 
 		name = format_uri(imp->uri);
-		if (left < name->len) goto overrun;
+		if (left < name->len + 1) goto overrun;
 		strncpy(p, name->s, name->len);
 		p += name->len;
 		left -= name->len;
 
-		if (left < 1) goto overrun;
+		if (left < 2) goto overrun;
 		*p++ = '\n';
 		left--;
 




More information about the sr-dev mailing list