Message ID | 20190111193011.GA19839@sigill.intra.peff.net (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | remote: check config validity before creating rewrite struct | expand |
Jeff King <peff@peff.net> writes: > This was a minor cleanup I mentioned in: > > https://public-inbox.org/git/20181122173109.GI28192@sigill.intra.peff.net/ > > but didn't get picked up. Yeah, that does sound vaguely familiar ;-) Thanks, will queue. > > remote.c | 4 ++-- > 1 file changed, 2 insertions(+), 2 deletions(-) > > diff --git a/remote.c b/remote.c > index 670dd44813..9cc3b07d21 100644 > --- a/remote.c > +++ b/remote.c > @@ -337,14 +337,14 @@ static int handle_config(const char *key, const char *value, void *cb) > if (!name) > return 0; > if (!strcmp(subkey, "insteadof")) { > - rewrite = make_rewrite(&rewrites, name, namelen); > if (!value) > return config_error_nonbool(key); > + rewrite = make_rewrite(&rewrites, name, namelen); > add_instead_of(rewrite, xstrdup(value)); > } else if (!strcmp(subkey, "pushinsteadof")) { > - rewrite = make_rewrite(&rewrites_push, name, namelen); > if (!value) > return config_error_nonbool(key); > + rewrite = make_rewrite(&rewrites_push, name, namelen); > add_instead_of(rewrite, xstrdup(value)); > } > }
diff --git a/remote.c b/remote.c index 670dd44813..9cc3b07d21 100644 --- a/remote.c +++ b/remote.c @@ -337,14 +337,14 @@ static int handle_config(const char *key, const char *value, void *cb) if (!name) return 0; if (!strcmp(subkey, "insteadof")) { - rewrite = make_rewrite(&rewrites, name, namelen); if (!value) return config_error_nonbool(key); + rewrite = make_rewrite(&rewrites, name, namelen); add_instead_of(rewrite, xstrdup(value)); } else if (!strcmp(subkey, "pushinsteadof")) { - rewrite = make_rewrite(&rewrites_push, name, namelen); if (!value) return config_error_nonbool(key); + rewrite = make_rewrite(&rewrites_push, name, namelen); add_instead_of(rewrite, xstrdup(value)); } }
When parsing url.foo.insteadOf, we call make_rewrite() and only then check to make sure the value is a string (and return an error if it isn't). This isn't quite a leak, because the struct we allocate is part of a global array, but it does leave a funny half-finished struct. In practice, it doesn't make much difference because we exit soon after due to the config error anyway. But let's flip the order here to avoid leaving a trap for somebody in the future. Signed-off-by: Jeff King <peff@peff.net> --- This was a minor cleanup I mentioned in: https://public-inbox.org/git/20181122173109.GI28192@sigill.intra.peff.net/ but didn't get picked up. remote.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)