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:
parent
b47b7bd1d0
commit
588fb8efc6
16
cgit.c
16
cgit.c
@ -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)
|
||||||
|
Loading…
Reference in New Issue
Block a user