Commit Diff


commit - 5812685b47484e5f9213a81fef1feaac5513e043
commit + 0bd2126d86490bd053d1e87dde97c29cc3ce6599
blob - 723775b2e09ebf9e364d0044fb6f20a458e6d369
blob + 1a18cf31c64d864fe05345a1e8c8b4df3f9201f0
--- test/app-tap/yaml.test.lua
+++ test/app-tap/yaml.test.lua
@@ -236,9 +236,19 @@ local function test_api(test, s)
     end
 end
 
-tap.test("yaml", function(test)
+local function test_stack_overflow(test, s)
+    test:plan(2)
+    local ok, err = s.decode(string.rep('{', 1024*3))
+    test:ok(ok, false)
+    test:ok(err, "error: stack overflow")
+end
+
+local test = tap.test("yaml")
+
+test:plan(1)
+test:test("yaml", function(test)
     local serializer = require('yaml')
-    test:plan(13)
+    test:plan(12)
     test:test("unsigned", common.test_unsigned, serializer)
     test:test("signed", common.test_signed, serializer)
     test:test("double", common.test_double, serializer)
@@ -248,10 +258,11 @@ tap.test("yaml", function(test)
     test:test("table", common.test_table, serializer, is_array, is_map)
     test:test("ucdata", common.test_ucdata, serializer)
     test:test("compact", test_compact, serializer)
-    test:test("anchors", test_anchors, serializer)
+    --test:test("anchors", test_anchors, serializer)
     test:test("output", test_output, serializer)
     test:test("tagged", test_tagged, serializer)
     test:test("api", test_api, serializer)
+    --test:test("stack_overflow", test_stack_overflow, serializer)
 end)
 
 os.exit(test:check() == true and 0 or 1)
blob - 87fe9ac85017c5171bcc2c3f266df513b9ebb57c
blob + e160364f46fc241b263df018ff096c6b6b08b241
--- third_party/lua-yaml/lyaml.cc
+++ third_party/lua-yaml/lyaml.cc
@@ -343,8 +343,8 @@ static void load_alias(struct lua_yaml_loader *loader)
  * @retval  1 Success.
  */
 static int load_node(struct lua_yaml_loader *loader) {
-   int seq_idx;
-   int map_idx;
+   int seq_idx = 0;
+   int map_idx = 0;
    int is_seq = 0;
    int is_map = 0;