[Tickets #7843] yaml loader fails if string contain curly brackets

bugs at horde.org bugs at horde.org
Tue Jan 13 15:27:47 UTC 2009


DO NOT REPLY TO THIS MESSAGE. THIS EMAIL ADDRESS IS NOT MONITORED.

Ticket URL: http://bugs.horde.org/ticket/7843
------------------------------------------------------------------------------
  Ticket             | 7843
  Created By         | eero.afheurlin at nemein.com
  Summary            | yaml loader fails if string contain curly brackets
  Queue              | Horde Framework Packages
  Version            | FRAMEWORK_3
  Type               | Bug
  State              | Unconfirmed
  Priority           | 2. Medium
  Milestone          |
  Patch              |
  Owners             |
------------------------------------------------------------------------------


eero.afheurlin at nemein.com (2009-01-13 10:27) wrote:

Consider the following yaml snippet

---<snip>---
routes:
     index:
         controller: net_nemein_news_controllers_index
         action: latest
         route: /
         content_entry_point: nnn-show-latest
         allowed_methods:
             - OPTIONS
             - GET
             - PROPFIND
     latest:
         controller: net_nemein_news_controllers_index
         action: latest
         route: "/latest/{$int:number}/"
         content_entry_point: nnn-show-latest
     rss:
         controller: net_nemein_news_controllers_index
         action: latest
         route: /rss.xml
         mimetype: text/xml
         template_entry_point: nnn-show-rss
     show:
         controller: net_nemein_news_controllers_article
         action: show
         route: "/{$name}/"
         content_entry_point: nnn-show-article
     edit:
         controller: net_nemein_news_controllers_article
         action: edit
         route: "/{$name}/edit"
         content_entry_point: nnn-edit-article
---<snap>---

This has the same bug as spyck in the parser (supposedly) thinking  
that the curly brackets inside strings are inline maps

syck parses this correctly even when the routes with curly brackets  
are not quoted.

tested on "PHP 5.2.0-8+etch11 (cli)" using the following code and  
horde/Yaml-1.0.1 via PEAR.

---<snip>---
<?php
error_reporting(E_ALL);
require_once('Horde/Yaml.php');
require_once('Horde/Yaml/Node.php');
require_once('Horde/Yaml/Exception.php');
require_once('Horde/Yaml/Loader.php');
$path = realpath(dirname(__FILE__)) . '/test.yml';
echo "path={$path}\n";
$array = Horde_Yaml::load($path);
if (   !(   isset($array['routes'])
          && isset($array['routes']['latest'])
          && isset($array['routes']['latest']['route'])
          && is_string($array['routes']['latest']['route']))
     || !(   isset($array['routes'])
          && isset($array['routes']['show'])
          && isset($array['routes']['show']['route'])
          && is_string($array['routes']['show']['route']))
     )
{
     echo "ERROR: Invalidly parsed route\n";
     var_dump($array);
     exit(1);
}

echo "No  errors detected";
?>
---<snip>---






More information about the bugs mailing list