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>
This commit is contained in:

committed by
Junio C Hamano

parent
021ba32a7b
commit
f5914f4b6b
@ -242,7 +242,7 @@ static int add_man_viewer_cmd(const char *name,
|
||||
static int add_man_viewer_info(const char *var, const char *value)
|
||||
{
|
||||
const char *name, *subkey;
|
||||
int namelen;
|
||||
size_t namelen;
|
||||
|
||||
if (parse_config_key(var, "man", &name, &namelen, &subkey) < 0 || !name)
|
||||
return 0;
|
||||
|
Reference in New Issue
Block a user