author | saurabh.vyas@oracle.com |
Fri, 08 May 2015 11:22:54 -0700 | |
changeset 4264 | 7d52b0c22474 |
parent 1636 | d3ad0c91bf12 |
permissions | -rw-r--r-- |
1636
d3ad0c91bf12
18039022 Running "/usr/bin/columns --help" crashes with segmentation fault
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
1 |
Prevent "/usr/bin/columns --help" from crashing. |
d3ad0c91bf12
18039022 Running "/usr/bin/columns --help" crashes with segmentation fault
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
2 |
|
d3ad0c91bf12
18039022 Running "/usr/bin/columns --help" crashes with segmentation fault
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
3 |
This problem has been reported upstream and fixed in a future autogen |
d3ad0c91bf12
18039022 Running "/usr/bin/columns --help" crashes with segmentation fault
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
4 |
release. The autogen maintainer says: |
d3ad0c91bf12
18039022 Running "/usr/bin/columns --help" crashes with segmentation fault
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
5 |
|
d3ad0c91bf12
18039022 Running "/usr/bin/columns --help" crashes with segmentation fault
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
6 |
"This is a very long standing bug that I'm surprised hasn't surfaced before: |
d3ad0c91bf12
18039022 Running "/usr/bin/columns --help" crashes with segmentation fault
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
7 |
|
d3ad0c91bf12
18039022 Running "/usr/bin/columns --help" crashes with segmentation fault
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
8 |
In autoopts/numeric.c we have: |
d3ad0c91bf12
18039022 Running "/usr/bin/columns --help" crashes with segmentation fault
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
9 |
|
d3ad0c91bf12
18039022 Running "/usr/bin/columns --help" crashes with segmentation fault
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
10 |
/* |
d3ad0c91bf12
18039022 Running "/usr/bin/columns --help" crashes with segmentation fault
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
11 |
* Numeric options may have a range associated with it. |
d3ad0c91bf12
18039022 Running "/usr/bin/columns --help" crashes with segmentation fault
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
12 |
* If it does, the usage procedure requests that it be |
d3ad0c91bf12
18039022 Running "/usr/bin/columns --help" crashes with segmentation fault
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
13 |
* emitted by passing a NULL od pointer. Also bail out |
d3ad0c91bf12
18039022 Running "/usr/bin/columns --help" crashes with segmentation fault
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
14 |
* if there is no option argument or if we are being reset. |
d3ad0c91bf12
18039022 Running "/usr/bin/columns --help" crashes with segmentation fault
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
15 |
*/ |
d3ad0c91bf12
18039022 Running "/usr/bin/columns --help" crashes with segmentation fault
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
16 |
if ( (od == NULL) |
d3ad0c91bf12
18039022 Running "/usr/bin/columns --help" crashes with segmentation fault
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
17 |
|| (od->optArg.argString == NULL) |
d3ad0c91bf12
18039022 Running "/usr/bin/columns --help" crashes with segmentation fault
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
18 |
|| ((od->fOptState & OPTST_RESET) != 0)) |
d3ad0c91bf12
18039022 Running "/usr/bin/columns --help" crashes with segmentation fault
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
19 |
return; |
d3ad0c91bf12
18039022 Running "/usr/bin/columns --help" crashes with segmentation fault
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
20 |
|
d3ad0c91bf12
18039022 Running "/usr/bin/columns --help" crashes with segmentation fault
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
21 |
errno = 0; |
d3ad0c91bf12
18039022 Running "/usr/bin/columns --help" crashes with segmentation fault
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
22 |
val = strtol(od->optArg.argString, &pz, 0); |
d3ad0c91bf12
18039022 Running "/usr/bin/columns --help" crashes with segmentation fault
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
23 |
|
d3ad0c91bf12
18039022 Running "/usr/bin/columns --help" crashes with segmentation fault
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
24 |
Another condition for that bail-out needs to be whether or not |
d3ad0c91bf12
18039022 Running "/usr/bin/columns --help" crashes with segmentation fault
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
25 |
the "argString" has just been set. It has not been in this case |
d3ad0c91bf12
18039022 Running "/usr/bin/columns --help" crashes with segmentation fault
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
26 |
because we are trying to tease out some usage information." |
d3ad0c91bf12
18039022 Running "/usr/bin/columns --help" crashes with segmentation fault
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
27 |
|
d3ad0c91bf12
18039022 Running "/usr/bin/columns --help" crashes with segmentation fault
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
28 |
This patch is based on the solution provided by the autogen maintainer. |
d3ad0c91bf12
18039022 Running "/usr/bin/columns --help" crashes with segmentation fault
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
29 |
|
d3ad0c91bf12
18039022 Running "/usr/bin/columns --help" crashes with segmentation fault
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
30 |
--- autogen-5.16.2/autoopts/numeric.c.orig 2014-01-09 12:50:03.575210189 -0800 |
d3ad0c91bf12
18039022 Running "/usr/bin/columns --help" crashes with segmentation fault
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
31 |
+++ autogen-5.16.2/autoopts/numeric.c 2014-01-09 13:08:29.709753147 -0800 |
d3ad0c91bf12
18039022 Running "/usr/bin/columns --help" crashes with segmentation fault
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
32 |
@@ -111,7 +111,8 @@ |
d3ad0c91bf12
18039022 Running "/usr/bin/columns --help" crashes with segmentation fault
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
33 |
*/ |
d3ad0c91bf12
18039022 Running "/usr/bin/columns --help" crashes with segmentation fault
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
34 |
if ( (pOD == NULL) |
d3ad0c91bf12
18039022 Running "/usr/bin/columns --help" crashes with segmentation fault
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
35 |
|| (pOD->optArg.argString == NULL) |
d3ad0c91bf12
18039022 Running "/usr/bin/columns --help" crashes with segmentation fault
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
36 |
- || ((pOD->fOptState & OPTST_RESET) != 0)) |
d3ad0c91bf12
18039022 Running "/usr/bin/columns --help" crashes with segmentation fault
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
37 |
+ || ((pOD->fOptState & OPTST_RESET) != 0) |
d3ad0c91bf12
18039022 Running "/usr/bin/columns --help" crashes with segmentation fault
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
38 |
+ || (pOpts <= OPTPROC_EMIT_LIMIT)) |
d3ad0c91bf12
18039022 Running "/usr/bin/columns --help" crashes with segmentation fault
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
39 |
return; |
d3ad0c91bf12
18039022 Running "/usr/bin/columns --help" crashes with segmentation fault
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
40 |
|
d3ad0c91bf12
18039022 Running "/usr/bin/columns --help" crashes with segmentation fault
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
41 |
errno = 0; |