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:
		
							
								
								
									
										16
									
								
								cgit.c
									
									
									
									
									
								
							
							
						
						
									
										16
									
								
								cgit.c
									
									
									
									
									
								
							| @@ -457,6 +457,15 @@ char *build_snapshot_setting(int bitmap) | ||||
| 	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 @@ void print_repo(FILE *f, struct cgit_repo *repo) | ||||
| 	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) | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 Lars Hjemli
					Lars Hjemli