diff --git a/src/libosmo-mgcp-client/mgcp_client.c b/src/libosmo-mgcp-client/mgcp_client.c
index 7e83f95..5cd14f7 100644
--- a/src/libosmo-mgcp-client/mgcp_client.c
+++ b/src/libosmo-mgcp-client/mgcp_client.c
@@ -200,8 +200,7 @@
 		goto response_parse_failure;
 
 	/* Extract IP-Address */
-	strncpy(r->audio_ip, line + 9, sizeof(r->audio_ip));
-	r->audio_ip[sizeof(r->audio_ip) - 1] = '\0';
+	osmo_strlcpy(r->audio_ip, line + 9, sizeof(r->audio_ip));
 
 	/* Check IP-Address */
 	if (inet_aton(r->audio_ip, &ip_test) == 0)
@@ -397,7 +396,7 @@
 	unsigned int l = msg->len < sizeof(strbuf) ? msg->len : sizeof(strbuf);
 	unsigned int i;
 
-	strncpy(strbuf, (const char*)msg->data, l);
+	osmo_strlcpy(strbuf, (const char*)msg->data, l);
 	for (i = 0; i < sizeof(strbuf); i++) {
 		if (strbuf[i] == '\n' || strbuf[i] == '\r') {
 			strbuf[i] = '\0';
diff --git a/src/libosmo-mgcp/mgcp_conn.c b/src/libosmo-mgcp/mgcp_conn.c
index e33596d..dcfc2ff 100644
--- a/src/libosmo-mgcp/mgcp_conn.c
+++ b/src/libosmo-mgcp/mgcp_conn.c
@@ -29,7 +29,8 @@
 #include <ctype.h>
 
 /* Allocate a new connection identifier. According to RFC3435, they must
- * be unique only within the scope of the endpoint. */
+ * be unique only within the scope of the endpoint. (Caller must provide
+ * memory for id) */
 static int mgcp_alloc_id(struct mgcp_endpoint *endp, char *id)
 {
 	int i;
@@ -140,7 +141,7 @@
 	conn->mode = MGCP_CONN_NONE;
 	conn->mode_orig = MGCP_CONN_NONE;
 	conn->u.rtp.conn = conn;
-	strcpy(conn->name, name);
+	osmo_strlcpy(conn->name, name, sizeof(conn->name));
 	rc = mgcp_alloc_id(endp, conn->id);
 	if (rc < 0) {
 		talloc_free(conn);
diff --git a/src/libosmo-mgcp/mgcp_network.c b/src/libosmo-mgcp/mgcp_network.c
index a02b0d1..816f16b 100644
--- a/src/libosmo-mgcp/mgcp_network.c
+++ b/src/libosmo-mgcp/mgcp_network.c
@@ -88,7 +88,7 @@
 	if (endp->cfg->net_ports.bind_addr) {
 		/* Check there is a bind IP for the RTP traffic configured,
 		 * if so, use that IP-Address */
-		strncpy(addr, endp->cfg->net_ports.bind_addr, INET_ADDRSTRLEN);
+		osmo_strlcpy(addr, endp->cfg->net_ports.bind_addr, INET_ADDRSTRLEN);
 		LOGP(DRTP, LOGL_DEBUG,
 		     "endpoint:%x CI:%s using configured rtp bind ip as local bind ip %s\n",
 		     ENDPOINT_NUMBER(endp), conn->conn->id, addr);
@@ -96,7 +96,7 @@
 		/* No specific bind IP is configured for the RTP traffic, so
 		 * assume the IP where we listen for incoming MGCP messages
 		 * as bind IP */
-		strncpy(addr, endp->cfg->source_addr, INET_ADDRSTRLEN);
+		osmo_strlcpy(addr, endp->cfg->source_addr, INET_ADDRSTRLEN);
 		LOGP(DRTP, LOGL_DEBUG,
 		     "endpoint:%x CI:%s using mgcp bind ip as local rtp bind ip: %s\n",
 		     ENDPOINT_NUMBER(endp), conn->conn->id, addr);
diff --git a/tests/mgcp_client/mgcp_client_test.c b/tests/mgcp_client/mgcp_client_test.c
index 5fd59e9..37fe0b8 100644
--- a/tests/mgcp_client/mgcp_client_test.c
+++ b/tests/mgcp_client/mgcp_client_test.c
@@ -46,14 +46,14 @@
 	l = strlen(head);
 	msg->l2h = msgb_put(msg, l);
 	data = (char*)msgb_l2(msg);
-	strncpy(data, head, l);
+	osmo_strlcpy(data, head, l);
 
 	data = (char*)msgb_put(msg, 1);
 	*data = '\n';
 
 	l = strlen(params);
 	data = (char*)msgb_put(msg, l);
-	strncpy(data, params, l);
+	osmo_strlcpy(data, params, l);
 
 	return msg;
 }
@@ -66,7 +66,7 @@
 	char *data;
 	msg->l2h = msgb_put(msg, l);
 	data = (char*)msgb_l2(msg);
-	strncpy(data, str, l);
+	osmo_strlcpy(data, str, l);
 	return msg;
 }
 
