summaryrefslogtreecommitdiffabout
path: root/scan-tree.c
authorStefan Gehn <stefan@srcbox.net>2011-03-26 08:51:39 (UTC)
committer Lars Hjemli <hjemli@gmail.com>2011-03-26 10:44:16 (UTC)
commitf15c5833d2190bc62e0e1e3e9753ef33230ecd53 (patch) (unidiff)
treea81dd18bd692d7a5fb00c38910b871c5ffc29464 /scan-tree.c
parentcc59ee502646dc4e3d0f8bbe29b24c7fa3f0d2dd (diff)
downloadcgit-f15c5833d2190bc62e0e1e3e9753ef33230ecd53.zip
cgit-f15c5833d2190bc62e0e1e3e9753ef33230ecd53.tar.gz
cgit-f15c5833d2190bc62e0e1e3e9753ef33230ecd53.tar.bz2
Fix crash when projectsfile cannot be opened
This patch makes cgit properly abort in case the projectsfile cannot be opened. Without the added return cgit continues using the projects pointer which is NULL and thus causes a segfault.
Diffstat (limited to 'scan-tree.c') (more/less context) (ignore whitespace changes)
-rw-r--r--scan-tree.c1
1 files changed, 1 insertions, 0 deletions
diff --git a/scan-tree.c b/scan-tree.c
index 627af1b..e5a4baf 100644
--- a/scan-tree.c
+++ b/scan-tree.c
@@ -214,16 +214,17 @@ void scan_projects(const char *path, const char *projectsfile, repo_config_fn fn
214 char line[MAX_PATH * 2], *z; 214 char line[MAX_PATH * 2], *z;
215 FILE *projects; 215 FILE *projects;
216 int err; 216 int err;
217 217
218 projects = fopen(projectsfile, "r"); 218 projects = fopen(projectsfile, "r");
219 if (!projects) { 219 if (!projects) {
220 fprintf(stderr, "Error opening projectsfile %s: %s (%d)\n", 220 fprintf(stderr, "Error opening projectsfile %s: %s (%d)\n",
221 projectsfile, strerror(errno), errno); 221 projectsfile, strerror(errno), errno);
222 return;
222 } 223 }
223 while (fgets(line, sizeof(line), projects) != NULL) { 224 while (fgets(line, sizeof(line), projects) != NULL) {
224 for (z = &lastc(line); 225 for (z = &lastc(line);
225 strlen(line) && strchr("\n\r", *z); 226 strlen(line) && strchr("\n\r", *z);
226 z = &lastc(line)) 227 z = &lastc(line))
227 *z = '\0'; 228 *z = '\0';
228 if (strlen(line)) 229 if (strlen(line))
229 scan_path(path, fmt("%s/%s", path, line), fn); 230 scan_path(path, fmt("%s/%s", path, line), fn);