X-Git-Url: https://git.octo.it/?p=git.git;a=blobdiff_plain;f=refs.c;h=713ca467368e24f6112663b7b96921f9d1bbc145;hp=24dcba7189bdd9c1cdb4e1329f5676f43aa64467;hb=162f41292167a800432fc6bbacfcd9f93a90b0c8;hpb=c33d5174d692b1861e0b2f656e51b80b2b00a23c diff --git a/refs.c b/refs.c index 24dcba71..713ca467 100644 --- a/refs.c +++ b/refs.c @@ -104,6 +104,11 @@ int create_symref(const char *git_HEAD, const char *refs_heads_master) error("Unable to create %s", git_HEAD); return -3; } + if (adjust_shared_perm(git_HEAD)) { + unlink(lockpath); + error("Unable to fix permissions on %s", lockpath); + return -4; + } return 0; } @@ -259,7 +264,7 @@ int check_ref_format(const char *ref) } } -static struct ref_lock* verify_lock(struct ref_lock *lock, +static struct ref_lock *verify_lock(struct ref_lock *lock, const unsigned char *old_sha1, int mustexist) { char buf[40]; @@ -285,7 +290,7 @@ static struct ref_lock* verify_lock(struct ref_lock *lock, return lock; } -static struct ref_lock* lock_ref_sha1_basic(const char *path, +static struct ref_lock *lock_ref_sha1_basic(const char *path, int plen, const unsigned char *old_sha1, int mustexist) { @@ -320,7 +325,7 @@ static struct ref_lock* lock_ref_sha1_basic(const char *path, return old_sha1 ? verify_lock(lock, old_sha1, mustexist) : lock; } -struct ref_lock* lock_ref_sha1(const char *ref, +struct ref_lock *lock_ref_sha1(const char *ref, const unsigned char *old_sha1, int mustexist) { if (check_ref_format(ref)) @@ -329,14 +334,14 @@ struct ref_lock* lock_ref_sha1(const char *ref, 5 + strlen(ref), old_sha1, mustexist); } -struct ref_lock* lock_any_ref_for_update(const char *ref, +struct ref_lock *lock_any_ref_for_update(const char *ref, const unsigned char *old_sha1, int mustexist) { return lock_ref_sha1_basic(git_path("%s", ref), strlen(ref), old_sha1, mustexist); } -void unlock_ref (struct ref_lock *lock) +void unlock_ref(struct ref_lock *lock) { if (lock->lock_fd >= 0) { close(lock->lock_fd); @@ -384,7 +389,8 @@ static int log_ref_write(struct ref_lock *lock, sha1_to_hex(sha1), comitter, msg); - } else { + } + else { maxlen = strlen(comitter) + 2*40 + 4; logrec = xmalloc(maxlen); len = snprintf(logrec, maxlen, "%s %s %s\n", @@ -477,10 +483,12 @@ int read_ref_at(const char *ref, unsigned long at_time, unsigned char *sha1) "warning: Log %s has gap after %s.\n", logfile, show_rfc2822_date(date, tz)); } - } else if (date == at_time) { + } + else if (date == at_time) { if (get_sha1_hex(rec + 41, sha1)) die("Log %s is corrupt.", logfile); - } else { + } + else { if (get_sha1_hex(rec + 41, logged_sha1)) die("Log %s is corrupt.", logfile); if (memcmp(logged_sha1, sha1, 20)) {