6.0.0-alpha10
5/14/25

[#7843] yaml loader fails if string contain curly brackets
Summary yaml loader fails if string contain curly brackets
Queue Horde Framework Packages
Queue Version Git master
Type Bug
State Assigned
Priority 2. Medium
Owners chuck (at) horde (dot) org, mike (at) naberezny (dot) com
Requester eero.afheurlin (at) nemein (dot) com
Created 01/13/2009 (5965 days ago)
Due
Updated 09/24/2010 (5346 days ago)
Assigned 01/13/2009 (5965 days ago)
Resolved
Milestone
Patch No

History
09/24/2010 10:20:51 PM Jan Schneider Version ⇒ Git master
 
03/21/2009 11:39:50 AM eero (dot) afheurlin (at) nemein (dot) com Comment #2 Reply to this comment
using single-quotes in stead of double-quotes works around the issue 
on the old spyc at least (and the last time I looked you used the same 
code for parsing).



syck does not care about quoting or such, it "just works"
01/13/2009 03:56:00 PM Chuck Hagenbuch Assigned to Chuck Hagenbuch
Assigned to Mike Naberezny
State ⇒ Assigned
 
01/13/2009 03:31:20 PM Chuck Hagenbuch Version ⇒ HEAD
 
01/13/2009 03:27:46 PM eero (dot) afheurlin (at) nemein (dot) com Comment #1
Priority ⇒ 2. Medium
Type ⇒ Bug
Summary ⇒ yaml loader fails if string contain curly brackets
Queue ⇒ Horde Framework Packages
Milestone ⇒
Patch ⇒ No
State ⇒ Unconfirmed
Reply to this comment
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>---

Saved Queries