diff options
author | Junio C Hamano <gitster@pobox.com> | 2011-10-13 19:03:21 -0700 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2011-10-13 19:03:21 -0700 |
commit | 522a54568e40f8b9110f9dde5664623bd5d039ce (patch) | |
tree | e566535d4a3d9151e87ea8f108774712ea664317 | |
parent | 719c09fdad63506f45afdd1ad5b65d79cb879e90 (diff) | |
parent | 723f7a1387f1d79541fdbe66ad3778f2aaa370c4 (diff) | |
download | git-522a54568e40f8b9110f9dde5664623bd5d039ce.tar.gz |
Merge branch 'nd/git-daemon-error-msgs'
* nd/git-daemon-error-msgs:
daemon: return "access denied" if a service is not allowed
-rw-r--r-- | daemon.c | 12 |
1 files changed, 8 insertions, 4 deletions
@@ -257,11 +257,11 @@ static int run_service(char *dir, struct daemon_service *service) if (!enabled && !service->overridable) { logerror("'%s': service not enabled.", service->name); errno = EACCES; - return -1; + goto failed; } if (!(path = path_ok(dir))) - return -1; + goto failed; /* * Security on the cheap. @@ -277,7 +277,7 @@ static int run_service(char *dir, struct daemon_service *service) if (!export_all_trees && access("git-daemon-export-ok", F_OK)) { logerror("'%s': repository not exported.", path); errno = EACCES; - return -1; + goto failed; } if (service->overridable) { @@ -291,7 +291,7 @@ static int run_service(char *dir, struct daemon_service *service) logerror("'%s': service not enabled for '%s'", service->name, path); errno = EACCES; - return -1; + goto failed; } /* @@ -301,6 +301,10 @@ static int run_service(char *dir, struct daemon_service *service) signal(SIGTERM, SIG_IGN); return service->fn(); + +failed: + packet_write(1, "ERR %s: access denied", dir); + return -1; } static void copy_to_log(int fd) |