Bug#387458: [PATCH] Check arg count in commandcmd

2006-10-22 Thread Herbert Xu
On Sat, Oct 21, 2006 at 02:19:18PM +, Gerrit Pape wrote:
 Hi Herbert, please see
  http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=387458
 
 On Thu, Sep 14, 2006 at 03:50:02PM +0200, Julien Danjou wrote:
  I just found this bug which is easily reproductible:
 
  % dash -c 'command -v'
  zsh: segmentation fault  dash -c 'command -v'

Thanks Gerrit.

Since bash's behaviour is minimalist here, I've decided to adopt its
behaviour here as well which is to return success silently.

I've put the following patch into the tree.

Cheers,
-- 
Visit Openswan at http://www.openswan.org/
Email: Herbert Xu ~{PmVHI~} [EMAIL PROTECTED]
Home Page: http://gondor.apana.org.au/~herbert/
PGP Key: http://gondor.apana.org.au/~herbert/pubkey.txt
--
diff --git a/ChangeLog b/ChangeLog
index a4db7de..ecaff93 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,7 @@
+2006-10-22  Gerrit Pape [EMAIL PROTECTED]
+
+   * Fixed command -v segmentation fault.
+
 2006-10-13  Alexey Gladkov [EMAIL PROTECTED]
 
* Check return code for getgroups and fwrite.
diff --git a/src/exec.c b/src/exec.c
index 417ba8a..c55683d 100644
--- a/src/exec.c
+++ b/src/exec.c
@@ -846,6 +846,7 @@ commandcmd(argc, argv)
int argc;
char **argv;
 {
+   char *cmd;
int c;
enum {
VERIFY_BRIEF = 1,
@@ -862,8 +863,9 @@ #ifdef DEBUG
abort();
 #endif
 
-   if (verify)
-   return describe_command(out1, *argptr, verify - VERIFY_BRIEF);
+   cmd = *argptr;
+   if (verify  cmd)
+   return describe_command(out1, cmd, verify - VERIFY_BRIEF);
 
return 0;
 }


-- 
To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of unsubscribe. Trouble? Contact [EMAIL PROTECTED]



Bug#387458: [PATCH] Check arg count in commandcmd

2006-10-21 Thread Gerrit Pape
Hi Herbert, please see
 http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=387458

On Thu, Sep 14, 2006 at 03:50:02PM +0200, Julien Danjou wrote:
 I just found this bug which is easily reproductible:

 % dash -c 'command -v'
 zsh: segmentation fault  dash -c 'command -v'

---
 src/exec.c |2 ++
 1 files changed, 2 insertions(+), 0 deletions(-)

diff --git a/src/exec.c b/src/exec.c
index 417ba8a..fda4cf3 100644
--- a/src/exec.c
+++ b/src/exec.c
@@ -862,6 +862,8 @@ #ifdef DEBUG
abort();
 #endif
 
+   if (*argptr == NULL)
+   sh_error(arg count);
if (verify)
return describe_command(out1, *argptr, verify - VERIFY_BRIEF);
 
-- 
1.4.2.3


-- 
To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of unsubscribe. Trouble? Contact [EMAIL PROTECTED]