summaryrefslogtreecommitdiff
path: root/archive-tar.c
diff options
context:
space:
mode:
authorJeff King <peff@peff.net>2020-04-10 19:44:28 (GMT)
committerJunio C Hamano <gitster@pobox.com>2020-04-10 21:44:29 (GMT)
commitf5914f4b6bcdb517733c761fe5ba9d94471eb01d (patch)
tree12b2a92eecd00075ad0bc04100ebb22d2a0f9e5b /archive-tar.c
parent021ba32a7bca954235e31338c4f27b221a1807de (diff)
downloadgit-f5914f4b6bcdb517733c761fe5ba9d94471eb01d.zip
git-f5914f4b6bcdb517733c761fe5ba9d94471eb01d.tar.gz
git-f5914f4b6bcdb517733c761fe5ba9d94471eb01d.tar.bz2
parse_config_key(): return subsection len as size_t
We return the length to a subset of a string using an "int *" out-parameter. This is fine most of the time, as we'd expect config keys to be relatively short, but it could behave oddly if we had a gigantic config key. A more appropriate type is size_t. Let's switch over, which lets our callers use size_t as appropriate (they are bound by our type because they must pass the out-parameter as a pointer). This is mostly just a cleanup to make it clear this code handles long strings correctly. In practice, our config parser already chokes on long key names (because of a similar int/size_t mixup!). When doing an int/size_t conversion, we have to be careful that nobody was trying to assign a negative value to the variable. I manually confirmed that for each case here. They tend to just feed the result to xmemdupz() or similar; in a few cases I adjusted the parameter types for helper functions to make sure the size_t is preserved. Signed-off-by: Jeff King <peff@peff.net> Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'archive-tar.c')
-rw-r--r--archive-tar.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/archive-tar.c b/archive-tar.c
index 5a77701..5ceec36 100644
--- a/archive-tar.c
+++ b/archive-tar.c
@@ -364,7 +364,7 @@ static struct archiver **tar_filters;
static int nr_tar_filters;
static int alloc_tar_filters;
-static struct archiver *find_tar_filter(const char *name, int len)
+static struct archiver *find_tar_filter(const char *name, size_t len)
{
int i;
for (i = 0; i < nr_tar_filters; i++) {
@@ -380,7 +380,7 @@ static int tar_filter_config(const char *var, const char *value, void *data)
struct archiver *ar;
const char *name;
const char *type;
- int namelen;
+ size_t namelen;
if (parse_config_key(var, "tar", &name, &namelen, &type) < 0 || !name)
return 0;