PEAR is discontinued

This is a static archive preserving historical releases and metadata. No new packages or updates will be published. For updates to existing packages, or to publish new packages, please use Composer and Packagist.

Home » Console » Console_Getopt » Bug #10055

Not failing properly on short options missing required values

Details

Submitted2007-02-08 17:43 UTC
Fromjjohnston at mailwise dot com
Assignedcellog
StatusClosed
PackageConsole_Getopt
PHP Version4.4.4
OSSuSE 9.2
Roadmaps(Not assigned)

Comments

[2007-02-08 17:43 UTC] jjohnston at mailwise dot com

Description:
------------
Depending on the order that command line options are passed, it is possible to 'bypass' a required value for a short option which erroneously assigns another option as the value to the previous option.

Test script:
---------------
<?php
// filename test.php
require_once 'Console/Getopt.php';
$options = new Console_Getopt();
$ret = $options->getopt($options->readPHPArgv(), 'i:r::l', array('file=','test=='));
if(PEAR::isError($ret))
{
die($ret->getMessage()."\n");
}
else
{
var_dump($ret);
}
?>

Correct results
$ php test.php -l -i

Incorrect results
$ php test.php -i -l

Expected result:
----------------
$ php test.php -l -i # Behaves correctly

$ php test.php -i -l
Console_Getopt: option requires an argument -- i

Because -i is missing its value and -l is a different option.

Actual result:
--------------
# Incorrect behavior
$ php test.php -i -l
array(2) {
[0]=>
array(1) {
[0]=>
array(2) {
[0]=>
string(1) "i"
[1]=>
string(2) "-l"
}
}
[1]=>
array(0) {
}
}

# Correct behavior
$ php test.php -l -i
Console_Getopt: option requires an argument -- i