cgit

commit 588fb8efc69778b85062e8fc2f482a8de43bad75

Author: Lars Hjemli <hjemli@gmail.com>

cgit.c: only print first line of repo.desc in print_repo()

Since repo.desc might have been populated by reading the 'description'
file in GIT_DIR, it may contain newlines. And by printing the literal
value, we may then generate an invalid cgitrc include-file.

Signed-off-by: Lars Hjemli <hjemli@gmail.com>

 cgit.c | 16 ++++++++++++++--


diff --git a/cgit.c b/cgit.c
index 93a7a69f78d2fa37aa86df19fb9d4c6724f2eaf0..838163084e91795816184f150fbcea310d0bfb90 100644
--- a/cgit.c
+++ b/cgit.c
@@ -457,6 +457,15 @@ 		result[len - 1] = '\0';
 	return result;
 }
 
+char *get_first_line(char *txt)
+{
+	char *t = xstrdup(txt);
+	char *p = strchr(t, '\n');
+	if (p)
+		*p = '\0';
+	return t;
+}
+
 void print_repo(FILE *f, struct cgit_repo *repo)
 {
 	fprintf(f, "repo.url=%s\n", repo->url);
@@ -464,8 +473,11 @@ 	fprintf(f, "repo.name=%s\n", repo->name);
 	fprintf(f, "repo.path=%s\n", repo->path);
 	if (repo->owner)
 		fprintf(f, "repo.owner=%s\n", repo->owner);
-	if (repo->desc)
-		fprintf(f, "repo.desc=%s\n", repo->desc);
+	if (repo->desc) {
+		char *tmp = get_first_line(repo->desc);
+		fprintf(f, "repo.desc=%s\n", tmp);
+		free(tmp);
+	}
 	if (repo->readme)
 		fprintf(f, "repo.readme=%s\n", repo->readme);
 	if (repo->defbranch)