* [PATCH 2/2] Handle invalid argc gently
@ 2006-09-14 1:04 Dmitry V. Levin
2006-09-14 1:12 ` Junio C Hamano
0 siblings, 1 reply; 7+ messages in thread
From: Dmitry V. Levin @ 2006-09-14 1:04 UTC (permalink / raw)
To: Junio C Hamano; +Cc: GIT mailing list
describe, git: Handle argc==0 case the same way as argc==1.
merge-tree: Refuse excessive arguments.
Signed-off-by: Dmitry V. Levin <ldv@altlinux.org>
---
describe.c | 2 +-
git.c | 2 +-
merge-tree.c | 2 +-
3 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/describe.c b/describe.c
index 5ed052d..2172e8f 100644
--- a/describe.c
+++ b/describe.c
@@ -163,7 +163,7 @@ int main(int argc, char **argv)
setup_git_directory();
- if (i == argc)
+ if (i >= argc)
describe("HEAD", 1);
else
while (i < argc) {
diff --git a/git.c b/git.c
index 47c85e1..8c182a5 100644
--- a/git.c
+++ b/git.c
@@ -294,7 +294,7 @@ static void handle_internal_command(int
int main(int argc, const char **argv, char **envp)
{
- const char *cmd = argv[0];
+ const char *cmd = argv[0] ? argv[0] : "git-help";
char *slash = strrchr(cmd, '/');
const char *exec_path = NULL;
int done_alias = 0;
diff --git a/merge-tree.c b/merge-tree.c
index c154dcf..692ede0 100644
--- a/merge-tree.c
+++ b/merge-tree.c
@@ -337,7 +337,7 @@ int main(int argc, char **argv)
struct tree_desc t[3];
void *buf1, *buf2, *buf3;
- if (argc < 4)
+ if (argc != 4)
usage(merge_tree_usage);
setup_git_directory();
--
ldv
^ permalink raw reply related [flat|nested] 7+ messages in thread
* Re: [PATCH 2/2] Handle invalid argc gently
2006-09-14 1:04 [PATCH 2/2] Handle invalid argc gently Dmitry V. Levin
@ 2006-09-14 1:12 ` Junio C Hamano
2006-09-14 1:31 ` Dmitry V. Levin
0 siblings, 1 reply; 7+ messages in thread
From: Junio C Hamano @ 2006-09-14 1:12 UTC (permalink / raw)
To: Dmitry V. Levin; +Cc: git
"Dmitry V. Levin" <ldv@altlinux.org> writes:
> describe, git: Handle argc==0 case the same way as argc==1.
When does one get (ac == 0)?
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH 2/2] Handle invalid argc gently
2006-09-14 1:12 ` Junio C Hamano
@ 2006-09-14 1:31 ` Dmitry V. Levin
2006-09-14 6:34 ` Junio C Hamano
0 siblings, 1 reply; 7+ messages in thread
From: Dmitry V. Levin @ 2006-09-14 1:31 UTC (permalink / raw)
To: Junio C Hamano; +Cc: git
[-- Attachment #1: Type: text/plain, Size: 296 bytes --]
On Wed, Sep 13, 2006 at 06:12:02PM -0700, Junio C Hamano wrote:
> "Dmitry V. Levin" <ldv@altlinux.org> writes:
>
> > describe, git: Handle argc==0 case the same way as argc==1.
>
> When does one get (ac == 0)?
When one executes something like
execlp("git", NULL, NULL);
--
ldv
[-- Attachment #2: Type: application/pgp-signature, Size: 189 bytes --]
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH 2/2] Handle invalid argc gently
2006-09-14 1:31 ` Dmitry V. Levin
@ 2006-09-14 6:34 ` Junio C Hamano
2006-09-14 13:16 ` Dmitry V. Levin
0 siblings, 1 reply; 7+ messages in thread
From: Junio C Hamano @ 2006-09-14 6:34 UTC (permalink / raw)
To: Dmitry V. Levin; +Cc: git
"Dmitry V. Levin" <ldv@altlinux.org> writes:
> On Wed, Sep 13, 2006 at 06:12:02PM -0700, Junio C Hamano wrote:
>> "Dmitry V. Levin" <ldv@altlinux.org> writes:
>>
>> > describe, git: Handle argc==0 case the same way as argc==1.
>>
>> When does one get (ac == 0)?
>
> When one executes something like
> execlp("git", NULL, NULL);
Fair enough.
What is the valid reason to do execlp("git", NULL, NULL)?
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH 2/2] Handle invalid argc gently
2006-09-14 6:34 ` Junio C Hamano
@ 2006-09-14 13:16 ` Dmitry V. Levin
2006-09-14 16:53 ` Junio C Hamano
0 siblings, 1 reply; 7+ messages in thread
From: Dmitry V. Levin @ 2006-09-14 13:16 UTC (permalink / raw)
To: Junio C Hamano; +Cc: git
[-- Attachment #1: Type: text/plain, Size: 659 bytes --]
On Wed, Sep 13, 2006 at 11:34:05PM -0700, Junio C Hamano wrote:
> "Dmitry V. Levin" <ldv@altlinux.org> writes:
> > On Wed, Sep 13, 2006 at 06:12:02PM -0700, Junio C Hamano wrote:
> >> "Dmitry V. Levin" <ldv@altlinux.org> writes:
> >>
> >> > describe, git: Handle argc==0 case the same way as argc==1.
> >>
> >> When does one get (ac == 0)?
> >
> > When one executes something like
> > execlp("git", NULL, NULL);
>
> Fair enough.
>
> What is the valid reason to do execlp("git", NULL, NULL)?
Personally I do not plan to execute git this way on regular basis, indeed. :)
But argc == 0 is allowed, so why should git crash?
--
ldv
[-- Attachment #2: Type: application/pgp-signature, Size: 189 bytes --]
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH 2/2] Handle invalid argc gently
2006-09-14 13:16 ` Dmitry V. Levin
@ 2006-09-14 16:53 ` Junio C Hamano
2006-09-14 18:25 ` Dmitry V. Levin
0 siblings, 1 reply; 7+ messages in thread
From: Junio C Hamano @ 2006-09-14 16:53 UTC (permalink / raw)
To: Dmitry V. Levin; +Cc: git
"Dmitry V. Levin" <ldv@altlinux.org> writes:
>> What is the valid reason to do execlp("git", NULL, NULL)?
>
> Personally I do not plan to execute git this way on regular basis, indeed. :)
>
> But argc == 0 is allowed, so why should git crash?
Oh, no I was not arguing for making git crash. I was just
trying to learn if there is a valid reason to choose to, or
common misconfiguration that causes it to, run with ac == 0,
since I did not think of any.
It is good to be extra careful and defensive -- I just wanted to
know if there is more to it.
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH 2/2] Handle invalid argc gently
2006-09-14 16:53 ` Junio C Hamano
@ 2006-09-14 18:25 ` Dmitry V. Levin
0 siblings, 0 replies; 7+ messages in thread
From: Dmitry V. Levin @ 2006-09-14 18:25 UTC (permalink / raw)
To: Junio C Hamano; +Cc: git
[-- Attachment #1: Type: text/plain, Size: 743 bytes --]
On Thu, Sep 14, 2006 at 09:53:36AM -0700, Junio C Hamano wrote:
[...]
> >> What is the valid reason to do execlp("git", NULL, NULL)?
> >
> > Personally I do not plan to execute git this way on regular basis, indeed. :)
> >
> > But argc == 0 is allowed, so why should git crash?
>
> Oh, no I was not arguing for making git crash. I was just
> trying to learn if there is a valid reason to choose to, or
> common misconfiguration that causes it to, run with ac == 0,
> since I did not think of any.
Well, the execlp example is somewhat dragged in.
More common case is execvp:
char *argv[] = { NULL };
execvp("git", argv);
The argv array may be empty for various reasons, e.g. pointer arithmetic
mistakes.
--
ldv
[-- Attachment #2: Type: application/pgp-signature, Size: 189 bytes --]
^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2006-09-14 18:25 UTC | newest]
Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2006-09-14 1:04 [PATCH 2/2] Handle invalid argc gently Dmitry V. Levin
2006-09-14 1:12 ` Junio C Hamano
2006-09-14 1:31 ` Dmitry V. Levin
2006-09-14 6:34 ` Junio C Hamano
2006-09-14 13:16 ` Dmitry V. Levin
2006-09-14 16:53 ` Junio C Hamano
2006-09-14 18:25 ` Dmitry V. Levin
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).