diff --git a/channels/chan_h323.c b/channels/chan_h323.c
index 99b2086ae43eac722825a00f2b2150ca4cfdfb4e..735fde2c2090fa4df3be9dbc8d62ae846b396e99 100644
--- a/channels/chan_h323.c
+++ b/channels/chan_h323.c
@@ -1362,7 +1362,7 @@ static int update_common_options(struct ast_variable *v, struct call_options *op
 	return 0;
 }
 
-static struct oh323_user *build_user(char *name, struct ast_variable *v, struct ast_variable *alt, int realtime)
+static struct oh323_user *build_user(const char *name, struct ast_variable *v, struct ast_variable *alt, int realtime)
 {
 	struct oh323_user *user;
 	struct ast_ha *oldha;
@@ -1446,7 +1446,7 @@ static struct oh323_user *realtime_user(const call_details_t *cd)
 {
 	struct ast_variable *var, *tmp;
 	struct oh323_user *user;
-	char *username;
+	const char *username;
 
 	if (userbyalias)
 		var = ast_load_realtime("h323", "name", username = cd->call_source_aliases, NULL);
diff --git a/channels/chan_sip.c b/channels/chan_sip.c
index 34d4a4a5c0f5e4c3490976523ff9777d8d80f9c6..fc526593610451b5820bd7840a9a6c7c226db058 100644
--- a/channels/chan_sip.c
+++ b/channels/chan_sip.c
@@ -9951,7 +9951,7 @@ static int get_also_info(struct sip_pvt *p, struct sip_request *oreq)
  * Note that ast_sip_ouraddrfor() still rewrites p->ourip
  * if you specify externip/seternaddr/stunaddr.
  */
-static void check_via_response(struct sip_pvt *p, struct sip_request *req)
+static attribute_unused void check_via_response(struct sip_pvt *p, struct sip_request *req)
 {
 	char via[256];
 	char *cur, *opts;
diff --git a/channels/misdn_config.c b/channels/misdn_config.c
index 467e0a8af5e757e7943ae8e0dc7046a9c1be9f1e..12b299343af7e6c676c65e5e630c8a875d7fbe73 100644
--- a/channels/misdn_config.c
+++ b/channels/misdn_config.c
@@ -435,7 +435,7 @@ static int _enum_array_map (void)
 	return 0;
 }
 
-static int get_cfg_position (char *name, int type)
+static int get_cfg_position (const char *name, int type)
 {
 	int i;
 
@@ -861,11 +861,12 @@ int misdn_cfg_get_next_port_spin (int port)
 	return (p > 0) ? p : misdn_cfg_get_next_port(0);
 }
 
-static int _parse (union misdn_cfg_pt *dest, char *value, enum misdn_cfg_type type, int boolint_def)
+static int _parse (union misdn_cfg_pt *dest, const char *value, enum misdn_cfg_type type, int boolint_def)
 {
 	int re = 0;
 	int len, tmp;
 	char *valtmp;
+	char *tmp2 = ast_strdupa(value);
 
 	switch (type) {
 	case MISDN_CTYPE_STR:
@@ -905,7 +906,7 @@ static int _parse (union misdn_cfg_pt *dest, char *value, enum misdn_cfg_type ty
 		}
 		break;
 	case MISDN_CTYPE_MSNLIST:
-		for (valtmp = strsep(&value, ","); valtmp; valtmp = strsep(&value, ",")) {
+		for (valtmp = strsep(&tmp2, ","); valtmp; valtmp = strsep(&tmp2, ",")) {
 			if ((len = strlen(valtmp))) {
 				struct msn_list *ml = ast_malloc(sizeof(*ml));
 				ml->msn = ast_calloc(len+1, sizeof(char));
@@ -961,10 +962,10 @@ static void _build_port_config (struct ast_variable *v, char *cat)
 
 	for (; v; v = v->next) {
 		if (!strcasecmp(v->name, "ports")) {
-			char *token;
+			char *token, *tmp = ast_strdupa(v->value);
 			char ptpbuf[BUFFERSIZE] = "";
 			int start, end;
-			for (token = strsep(&v->value, ","); token; token = strsep(&v->value, ","), *ptpbuf = 0) { 
+			for (token = strsep(&tmp, ","); token; token = strsep(&tmp, ","), *ptpbuf = 0) { 
 				if (!*token)
 					continue;
 				if (sscanf(token, "%d-%d%s", &start, &end, ptpbuf) >= 2) {