diff options
| author | Michael Forney <mforney@mforney.org> | 2016-06-18 13:32:22 -0700 |
|---|---|---|
| committer | Michael Forney <mforney@mforney.org> | 2016-06-18 13:32:22 -0700 |
| commit | 23dfa1d03b9a677784ed289769854cade5cda657 (patch) | |
| tree | 472bc3ff7c321cb7804516dba39a85b908eab5e4 /util | |
| parent | 81ab516a0c8508ceb6aed9b4740fcc88a735051d (diff) | |
perms-hook: Read .perms from new revision rather than HEAD
Diffstat (limited to 'util')
| -rw-r--r-- | util/perms-hook.c | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/util/perms-hook.c b/util/perms-hook.c index b2505927..6a19bc52 100644 --- a/util/perms-hook.c +++ b/util/perms-hook.c @@ -83,9 +83,10 @@ spawn(char **argv, pid_t *pid) } static void -readperms(void) +readperms(const char *rev) { - static char *argv[] = {"git", "show", ":" PERMS_FILE, 0}; + char object[20 + sizeof(PERMS_FILE)]; + char *argv[] = {"git", "show", object, 0}; FILE *f; pid_t pid; char *line = NULL, *s, *mode; @@ -93,6 +94,8 @@ readperms(void) ssize_t n; int st; + if (snprintf(object, sizeof(object), "%s:%s", rev, PERMS_FILE) >= (int)sizeof(object)) + die("revision is too large: %s", rev); f = spawn(argv, &pid); while ((n = getline(&line, &size, f)) >= 0) { if (line[n-1] == '\n') @@ -298,7 +301,7 @@ int main(int argc, char *argv[]) { die("stat:"); rootdev = st.st_dev; - readperms(); + readperms(new); readchanges(old, new); return 0; |
