author | Lars Hjemli <hjemli@gmail.com> | 2009-08-24 11:27:15 (UTC) |
---|---|---|
committer | Lars Hjemli <hjemli@gmail.com> | 2009-08-24 11:27:15 (UTC) |
commit | 588fb8efc69778b85062e8fc2f482a8de43bad75 (patch) (unidiff) | |
tree | d611ec33de53d253d1e7db9768e1310b05fb3004 | |
parent | b47b7bd1d0fb872763214e674b53a562c7513fc0 (diff) | |
download | cgit-588fb8efc69778b85062e8fc2f482a8de43bad75.zip cgit-588fb8efc69778b85062e8fc2f482a8de43bad75.tar.gz cgit-588fb8efc69778b85062e8fc2f482a8de43bad75.tar.bz2 |
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>
-rw-r--r-- | cgit.c | 16 |
1 files changed, 14 insertions, 2 deletions
@@ -448,33 +448,45 @@ char *build_snapshot_setting(int bitmap) | |||
448 | if (f->bit & bitmap) { | 448 | if (f->bit & bitmap) { |
449 | tmp = result; | 449 | tmp = result; |
450 | result = xstrdup(fmt("%s%s ", tmp, f->suffix)); | 450 | result = xstrdup(fmt("%s%s ", tmp, f->suffix)); |
451 | free(tmp); | 451 | free(tmp); |
452 | } | 452 | } |
453 | } | 453 | } |
454 | len = strlen(result); | 454 | len = strlen(result); |
455 | if (len) | 455 | if (len) |
456 | result[len - 1] = '\0'; | 456 | result[len - 1] = '\0'; |
457 | return result; | 457 | return result; |
458 | } | 458 | } |
459 | 459 | ||
460 | char *get_first_line(char *txt) | ||
461 | { | ||
462 | char *t = xstrdup(txt); | ||
463 | char *p = strchr(t, '\n'); | ||
464 | if (p) | ||
465 | *p = '\0'; | ||
466 | return t; | ||
467 | } | ||
468 | |||
460 | void print_repo(FILE *f, struct cgit_repo *repo) | 469 | void print_repo(FILE *f, struct cgit_repo *repo) |
461 | { | 470 | { |
462 | fprintf(f, "repo.url=%s\n", repo->url); | 471 | fprintf(f, "repo.url=%s\n", repo->url); |
463 | fprintf(f, "repo.name=%s\n", repo->name); | 472 | fprintf(f, "repo.name=%s\n", repo->name); |
464 | fprintf(f, "repo.path=%s\n", repo->path); | 473 | fprintf(f, "repo.path=%s\n", repo->path); |
465 | if (repo->owner) | 474 | if (repo->owner) |
466 | fprintf(f, "repo.owner=%s\n", repo->owner); | 475 | fprintf(f, "repo.owner=%s\n", repo->owner); |
467 | if (repo->desc) | 476 | if (repo->desc) { |
468 | fprintf(f, "repo.desc=%s\n", repo->desc); | 477 | char *tmp = get_first_line(repo->desc); |
478 | fprintf(f, "repo.desc=%s\n", tmp); | ||
479 | free(tmp); | ||
480 | } | ||
469 | if (repo->readme) | 481 | if (repo->readme) |
470 | fprintf(f, "repo.readme=%s\n", repo->readme); | 482 | fprintf(f, "repo.readme=%s\n", repo->readme); |
471 | if (repo->defbranch) | 483 | if (repo->defbranch) |
472 | fprintf(f, "repo.defbranch=%s\n", repo->defbranch); | 484 | fprintf(f, "repo.defbranch=%s\n", repo->defbranch); |
473 | if (repo->module_link) | 485 | if (repo->module_link) |
474 | fprintf(f, "repo.module-link=%s\n", repo->module_link); | 486 | fprintf(f, "repo.module-link=%s\n", repo->module_link); |
475 | if (repo->section) | 487 | if (repo->section) |
476 | fprintf(f, "repo.section=%s\n", repo->section); | 488 | fprintf(f, "repo.section=%s\n", repo->section); |
477 | if (repo->clone_url) | 489 | if (repo->clone_url) |
478 | fprintf(f, "repo.clone-url=%s\n", repo->clone_url); | 490 | fprintf(f, "repo.clone-url=%s\n", repo->clone_url); |
479 | fprintf(f, "repo.enable-log-filecount=%d\n", | 491 | fprintf(f, "repo.enable-log-filecount=%d\n", |
480 | repo->enable_log_filecount); | 492 | repo->enable_log_filecount); |