* [PATCH] test-path-utils: use xsnprintf in favor of strcpy
@ 2016-02-08 22:21 Jeff King
2016-02-08 22:25 ` [PATCH] rerere: replace strcpy with xsnprintf Jeff King
` (3 more replies)
0 siblings, 4 replies; 7+ messages in thread
From: Jeff King @ 2016-02-08 22:21 UTC (permalink / raw)
To: Junio C Hamano; +Cc: Johannes Schindelin, git
This strcpy will never overflow because it's copying from
baked-in test data. But we would prefer to avoid strcpy
entirely, as it makes it harder to audit for real security
bugs.
Signed-off-by: Jeff King <peff@peff.net>
---
Repost of <20160114202608.GA8806@sigill.intra.peff.net> from a few weeks
ago (sorry, gmane is down so I can't generate a link). I think the
original was never applied because the topic that introduced the strcpy
(js/dirname-basename) predated xsnprintf, so there was some merging
complexity. Now that topic is in master, so this can be applied there.
test-path-utils.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/test-path-utils.c b/test-path-utils.c
index c3adcd8..6232dfe 100644
--- a/test-path-utils.c
+++ b/test-path-utils.c
@@ -56,7 +56,7 @@ static int test_function(struct test_data *data, char *(*func)(char *input),
if (!data[i].from)
to = func(NULL);
else {
- strcpy(buffer, data[i].from);
+ xsnprintf(buffer, sizeof(buffer), "%s", data[i].from);
to = func(buffer);
}
if (!strcmp(to, data[i].to))
--
2.7.1.526.gd04f550
^ permalink raw reply related [flat|nested] 7+ messages in thread
* [PATCH] rerere: replace strcpy with xsnprintf
2016-02-08 22:21 [PATCH] test-path-utils: use xsnprintf in favor of strcpy Jeff King
@ 2016-02-08 22:25 ` Jeff King
2016-02-08 23:07 ` Junio C Hamano
2016-02-08 22:41 ` [PATCH] test-path-utils: use xsnprintf in favor of strcpy Junio C Hamano
` (2 subsequent siblings)
3 siblings, 1 reply; 7+ messages in thread
From: Jeff King @ 2016-02-08 22:25 UTC (permalink / raw)
To: Junio C Hamano; +Cc: git
This shouldn't overflow, as we are copying a sha1 hex into a
41-byte buffer. But it does not hurt to use a bound-checking
function, which protects us and makes auditing for overflows
easier.
Signed-off-by: Jeff King <peff@peff.net>
---
These strcpy calls go away in jc/rerere-multi, so I was holding onto
this to see if that graduated. But since that is stalled, I figured it
cannot hurt to post (and the conflict resolution is obviously trivial).
With this and the previous patch, it makes our code base strcpy free.
Yay.
rerere.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/rerere.c b/rerere.c
index 403c700..587b7e2 100644
--- a/rerere.c
+++ b/rerere.c
@@ -48,7 +48,7 @@ static int has_rerere_resolution(const struct rerere_id *id)
static struct rerere_id *new_rerere_id_hex(char *hex)
{
struct rerere_id *id = xmalloc(sizeof(*id));
- strcpy(id->hex, hex);
+ xsnprintf(id->hex, sizeof(id->hex), "%s", hex);
return id;
}
@@ -904,7 +904,7 @@ int rerere_forget(struct pathspec *pathspec)
static struct rerere_id *dirname_to_id(const char *name)
{
static struct rerere_id id;
- strcpy(id.hex, name);
+ xsnprintf(id.hex, sizeof(id.hex), "%s", name);
return &id;
}
--
2.7.1.526.gd04f550
^ permalink raw reply related [flat|nested] 7+ messages in thread
* Re: [PATCH] rerere: replace strcpy with xsnprintf
2016-02-08 22:25 ` [PATCH] rerere: replace strcpy with xsnprintf Jeff King
@ 2016-02-08 23:07 ` Junio C Hamano
0 siblings, 0 replies; 7+ messages in thread
From: Junio C Hamano @ 2016-02-08 23:07 UTC (permalink / raw)
To: Jeff King; +Cc: git
Jeff King <peff@peff.net> writes:
> This shouldn't overflow, as we are copying a sha1 hex into a
> 41-byte buffer. But it does not hurt to use a bound-checking
> function, which protects us and makes auditing for overflows
> easier.
>
> Signed-off-by: Jeff King <peff@peff.net>
> ---
> These strcpy calls go away in jc/rerere-multi, so I was holding onto
> this to see if that graduated. But since that is stalled, I figured it
> cannot hurt to post (and the conflict resolution is obviously trivial).
>
> With this and the previous patch, it makes our code base strcpy free.
> Yay.
Thanks. I think jc/rerere-multi can be rerolled on top of this.
>
> rerere.c | 4 ++--
> 1 file changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/rerere.c b/rerere.c
> index 403c700..587b7e2 100644
> --- a/rerere.c
> +++ b/rerere.c
> @@ -48,7 +48,7 @@ static int has_rerere_resolution(const struct rerere_id *id)
> static struct rerere_id *new_rerere_id_hex(char *hex)
> {
> struct rerere_id *id = xmalloc(sizeof(*id));
> - strcpy(id->hex, hex);
> + xsnprintf(id->hex, sizeof(id->hex), "%s", hex);
> return id;
> }
>
> @@ -904,7 +904,7 @@ int rerere_forget(struct pathspec *pathspec)
> static struct rerere_id *dirname_to_id(const char *name)
> {
> static struct rerere_id id;
> - strcpy(id.hex, name);
> + xsnprintf(id.hex, sizeof(id.hex), "%s", name);
> return &id;
> }
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH] test-path-utils: use xsnprintf in favor of strcpy
2016-02-08 22:21 [PATCH] test-path-utils: use xsnprintf in favor of strcpy Jeff King
2016-02-08 22:25 ` [PATCH] rerere: replace strcpy with xsnprintf Jeff King
@ 2016-02-08 22:41 ` Junio C Hamano
2016-02-08 23:07 ` Eric Wong
2016-02-09 10:13 ` Johannes Schindelin
3 siblings, 0 replies; 7+ messages in thread
From: Junio C Hamano @ 2016-02-08 22:41 UTC (permalink / raw)
To: Jeff King; +Cc: Johannes Schindelin, git
Jeff King <peff@peff.net> writes:
> This strcpy will never overflow because it's copying from
> baked-in test data. But we would prefer to avoid strcpy
> entirely, as it makes it harder to audit for real security
> bugs.
>
> Signed-off-by: Jeff King <peff@peff.net>
> ---
> Repost of <20160114202608.GA8806@sigill.intra.peff.net> from a few weeks
> ago (sorry, gmane is down so I can't generate a link). I think the
> original was never applied because the topic that introduced the strcpy
> (js/dirname-basename) predated xsnprintf, so there was some merging
> complexity. Now that topic is in master, so this can be applied there.
Thanks. This kind of considerate "holding it off for a few weeks"
helps things a lot.
>
> test-path-utils.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/test-path-utils.c b/test-path-utils.c
> index c3adcd8..6232dfe 100644
> --- a/test-path-utils.c
> +++ b/test-path-utils.c
> @@ -56,7 +56,7 @@ static int test_function(struct test_data *data, char *(*func)(char *input),
> if (!data[i].from)
> to = func(NULL);
> else {
> - strcpy(buffer, data[i].from);
> + xsnprintf(buffer, sizeof(buffer), "%s", data[i].from);
> to = func(buffer);
> }
> if (!strcmp(to, data[i].to))
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH] test-path-utils: use xsnprintf in favor of strcpy
2016-02-08 22:21 [PATCH] test-path-utils: use xsnprintf in favor of strcpy Jeff King
2016-02-08 22:25 ` [PATCH] rerere: replace strcpy with xsnprintf Jeff King
2016-02-08 22:41 ` [PATCH] test-path-utils: use xsnprintf in favor of strcpy Junio C Hamano
@ 2016-02-08 23:07 ` Eric Wong
2016-02-08 23:13 ` Jeff King
2016-02-09 10:13 ` Johannes Schindelin
3 siblings, 1 reply; 7+ messages in thread
From: Eric Wong @ 2016-02-08 23:07 UTC (permalink / raw)
To: Jeff King; +Cc: Junio C Hamano, Johannes Schindelin, git
Jeff King <peff@peff.net> wrote:
> Repost of <20160114202608.GA8806@sigill.intra.peff.net> from a few weeks
> ago (sorry, gmane is down so I can't generate a link).
I prefer we use links derived from Message-IDs anyways. This
prevents reliance on gmane article numbers being a central point
of failure:
http://marc.info/?i=$MESSAGE_ID
http://mid.gmane.org/$MESSAGE_ID
http://mid.mail-archive.com/$MESSAGE_ID
But the MESSAGE_ID above seems missing from mail-archive.com, in this case.
Maybe there's more lookup-by-Message-ID services out there...
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH] test-path-utils: use xsnprintf in favor of strcpy
2016-02-08 23:07 ` Eric Wong
@ 2016-02-08 23:13 ` Jeff King
0 siblings, 0 replies; 7+ messages in thread
From: Jeff King @ 2016-02-08 23:13 UTC (permalink / raw)
To: Eric Wong; +Cc: Junio C Hamano, Johannes Schindelin, git
On Mon, Feb 08, 2016 at 11:07:26PM +0000, Eric Wong wrote:
> Jeff King <peff@peff.net> wrote:
> > Repost of <20160114202608.GA8806@sigill.intra.peff.net> from a few weeks
> > ago (sorry, gmane is down so I can't generate a link).
>
> I prefer we use links derived from Message-IDs anyways. This
> prevents reliance on gmane article numbers being a central point
> of failure:
>
> http://marc.info/?i=$MESSAGE_ID
> http://mid.gmane.org/$MESSAGE_ID
> http://mid.mail-archive.com/$MESSAGE_ID
I actually do, too. I keep a local archive of the whole list, and I have
a script that hits gmane to convert their article ids into message-ids.
When gmane is down I can still use my archive, but I can't resolve
anybody's article mentions. :)
I mostly use gmane links because people are used to them, though (I also
don't think there's a way using message-ids to point to a whole thread
with an article highlighted, though of course readers can get their by
clicking through).
> But the MESSAGE_ID above seems missing from mail-archive.com, in this case.
It seems to have a giant hole in git@vger messages between 2016-01-07
and 2016-01-20, which covers the referenced message (which was on the
14th).
-Peff
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH] test-path-utils: use xsnprintf in favor of strcpy
2016-02-08 22:21 [PATCH] test-path-utils: use xsnprintf in favor of strcpy Jeff King
` (2 preceding siblings ...)
2016-02-08 23:07 ` Eric Wong
@ 2016-02-09 10:13 ` Johannes Schindelin
3 siblings, 0 replies; 7+ messages in thread
From: Johannes Schindelin @ 2016-02-09 10:13 UTC (permalink / raw)
To: Jeff King; +Cc: Junio C Hamano, git
Hi Peff,
On Mon, 8 Feb 2016, Jeff King wrote:
> This strcpy will never overflow because it's copying from
> baked-in test data. But we would prefer to avoid strcpy
> entirely, as it makes it harder to audit for real security
> bugs.
>
> Signed-off-by: Jeff King <peff@peff.net>
ACK, of course.
Thanks!
Dscho
^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2016-02-09 10:13 UTC | newest]
Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2016-02-08 22:21 [PATCH] test-path-utils: use xsnprintf in favor of strcpy Jeff King
2016-02-08 22:25 ` [PATCH] rerere: replace strcpy with xsnprintf Jeff King
2016-02-08 23:07 ` Junio C Hamano
2016-02-08 22:41 ` [PATCH] test-path-utils: use xsnprintf in favor of strcpy Junio C Hamano
2016-02-08 23:07 ` Eric Wong
2016-02-08 23:13 ` Jeff King
2016-02-09 10:13 ` Johannes Schindelin
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).