File: 0008-BUILTIN-Fixed-command-v-segmentation-fault.diff

package info (click to toggle)
dash 0.5.3-7
  • links: PTS
  • area: main
  • in suites: etch, etch-m68k
  • size: 1,160 kB
  • ctags: 1,289
  • sloc: ansic: 12,660; sh: 1,068; makefile: 155; yacc: 105
file content (61 lines) | stat: -rw-r--r-- 1,599 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
From 7035bdb3cfd26abe25c09b6845e2ea691ad82ccc Mon Sep 17 00:00:00 2001
From: Herbert Xu <herbert@gondor.apana.org.au>
Date: Sun, 22 Oct 2006 19:55:00 +1000
Subject: [PATCH] [BUILTIN] Fixed command -v segmentation fault

On Sat, Oct 21, 2006 at 02:19:18PM +0000, 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'

Since bash's behaviour is minimalist here, I've decided to adopt its
behaviour here as well which is to return success silently.
---
 ChangeLog  |    4 ++++
 src/exec.c |    6 ++++--
 2 files changed, 8 insertions(+), 2 deletions(-)

diff --git a/ChangeLog b/ChangeLog
index a4db7de..ecaff93 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,7 @@
+2006-10-22  Gerrit Pape <pape@smarden.org>
+
+	* Fixed command -v segmentation fault.
+
 2006-10-13  Alexey Gladkov <legion@altlinux.org>
 
 	* 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;
 }
-- 
1.4.3.1