diff options
author | Martin Pärtel <martin.partel@gmail.com> | 2023-11-19 21:49:53 +0200 |
---|---|---|
committer | Martin Pärtel <martin.partel@gmail.com> | 2023-11-19 21:49:53 +0200 |
commit | 5c8390f75925797a81973925a14cdf8ab092a3bc (patch) | |
tree | f998c665b983a173cffc6ada9113494ffac96268 /src/permchain.c | |
parent | bea88937f4564e282063fb44aeac485012cfae87 (diff) | |
parent | db61be1897ffe8f4d1a72bed62c8c892d06a1983 (diff) | |
download | bindfs-5c8390f75925797a81973925a14cdf8ab092a3bc.tar.gz |
Merge remote-tracking branch 'origin/master' into vagrant-ci
Diffstat (limited to 'src/permchain.c')
-rw-r--r-- | src/permchain.c | 14 |
1 files changed, 13 insertions, 1 deletions
diff --git a/src/permchain.c b/src/permchain.c index b95bd8b..d101aa1 100644 --- a/src/permchain.c +++ b/src/permchain.c @@ -67,6 +67,8 @@ static int add_chmod_rule_to_permchain(const char *start, const char *end, int len = end - start; char *buf = malloc((len + 1) * sizeof(char)); + if (buf == NULL) + return -1; const char *p = buf; enum {LHS, RHS} state = LHS; @@ -149,8 +151,18 @@ error: static int add_octal_rule_to_permchain(const char *start, const char *end, struct permchain *pc) { + // Make [start..end[ available as a null-terminated string to `strtol` + const int len = end - start; + char * const buf = malloc((len + 1) * sizeof(char)); + if (buf == NULL) + return -1; + memcpy(buf, start, len); + buf[len] = '\0'; + struct permchain *newpc = permchain_create(); - long mode = strtol(start, NULL, 8); + + long mode = strtol(buf, NULL, 8); + free(buf); if (mode < 0 || mode > 0777) { permchain_destroy(newpc); |