Commit 5874ea87557e324b6e847a5dbed5a1b4b9efe92e

Stefan Sperling 2020-09-18T17:58:10

follow-up to be96c417: Do not assume a \0 when receiving GOTCONFIG_STR_VAL.

diff --git a/lib/privsep.c b/lib/privsep.c
index adef301..aae7f1d 100644
--- a/lib/privsep.c
+++ b/lib/privsep.c
@@ -1951,13 +1951,14 @@ got_privsep_recv_gotconfig_str(char **str, struct imsgbuf *ibuf)
 	case GOT_IMSG_GOTCONFIG_STR_VAL:
 		if (datalen == 0)
 			break;
-		*str = malloc(datalen);
+		/* datalen does not include terminating \0 */
+		*str = malloc(datalen + 1);
 		if (*str == NULL) {
 			err = got_error_from_errno("malloc");
 			break;
 		}
-		if (strlcpy(*str, imsg.data, datalen) >= datalen)
-			err = got_error(GOT_ERR_NO_SPACE);
+		memcpy(*str, imsg.data, datalen);
+		(*str)[datalen] = '\0';
 		break;
 	default:
 		err = got_error(GOT_ERR_PRIVSEP_MSG);