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>
This commit is contained in:
Lars Hjemli 2009-08-24 13:27:15 +02:00
parent b47b7bd1d0
commit 588fb8efc6

16
cgit.c
View File

@ -457,6 +457,15 @@ char *build_snapshot_setting(int bitmap)
return result; 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) void print_repo(FILE *f, struct cgit_repo *repo)
{ {
fprintf(f, "repo.url=%s\n", repo->url); fprintf(f, "repo.url=%s\n", repo->url);
@ -464,8 +473,11 @@ void print_repo(FILE *f, struct cgit_repo *repo)
fprintf(f, "repo.path=%s\n", repo->path); fprintf(f, "repo.path=%s\n", repo->path);
if (repo->owner) if (repo->owner)
fprintf(f, "repo.owner=%s\n", repo->owner); fprintf(f, "repo.owner=%s\n", repo->owner);
if (repo->desc) if (repo->desc) {
fprintf(f, "repo.desc=%s\n", repo->desc); char *tmp = get_first_line(repo->desc);
fprintf(f, "repo.desc=%s\n", tmp);
free(tmp);
}
if (repo->readme) if (repo->readme)
fprintf(f, "repo.readme=%s\n", repo->readme); fprintf(f, "repo.readme=%s\n", repo->readme);
if (repo->defbranch) if (repo->defbranch)