Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Loading invalid YAML results in "Error in `perl': double free or corruption (fasttop)" #44

Closed
perlpunk opened this issue Aug 19, 2017 · 3 comments
Labels

Comments

@perlpunk
Copy link
Collaborator

I am getting this error when loading invalid YAML:

use YAML::Syck;
my $yaml = <<"EOM";
key1: &a value1
&b *a : value2 # invalid anchor plus alias
EOM
my $data = Load($yaml);
*** Error in `perl': double free or corruption (fasttop): 0x000055b6a82ffbe0 ***
======= Backtrace: =========
/lib/x86_64-linux-gnu/libc.so.6(+0x70bcb)[0x7fe49e907bcb]
/lib/x86_64-linux-gnu/libc.so.6(+0x76f96)[0x7fe49e90df96]
/lib/x86_64-linux-gnu/libc.so.6(+0x777de)[0x7fe49e90e7de]
.../perlbrew/perls/perl-5.24.1/lib/site_perl/5.24.1/x86_64-linux/auto/YAML/Syck/Syck.so(syck_free_node+0x2d)[0x7fe49e683d3d]
.../perlbrew/perls/perl-5.24.1/lib/site_perl/5.24.1/x86_64-linux/auto/YAML/Syck/Syck.so(syck_st_free_nodes+0x12)[0x7fe49e683e52]
.../perlbrew/perls/perl-5.24.1/lib/site_perl/5.24.1/x86_64-linux/auto/YAML/Syck/Syck.so(st_foreach+0x55)[0x7fe49e685035]
.../perlbrew/perls/perl-5.24.1/lib/site_perl/5.24.1/x86_64-linux/auto/YAML/Syck/Syck.so(syck_st_free+0x20)[0x7fe49e684020]
.../perlbrew/perls/perl-5.24.1/lib/site_perl/5.24.1/x86_64-linux/auto/YAML/Syck/Syck.so(syck_free_parser+0x2a)[0x7fe49e68439a]
.../perlbrew/perls/perl-5.24.1/lib/site_perl/5.24.1/x86_64-linux/auto/YAML/Syck/Syck.so(+0x1361d)[0x7fe49e68a61d]
perl(Perl_pp_goto+0xa62)[0x55b6a6685462]
perl(Perl_runops_standard+0x13)[0x55b6a6644073]
perl(perl_run+0x2b6)[0x55b6a65d5076]
perl(main+0x10f)[0x55b6a65b235f]
/lib/x86_64-linux-gnu/libc.so.6(__libc_start_main+0xf1)[0x7fe49e8b72b1]
perl(_start+0x2a)[0x55b6a65b239a]
======= Memory map: ========
...
zsh: abort      perl

YAML::Syck 1.30
This is perl 5, version 24, subversion 1 (v5.24.1) built for x86_64-linux

@perlpunk
Copy link
Collaborator Author

Same result for:

foo: &a &b 23

@perlpunk
Copy link
Collaborator Author

perlpunk commented Oct 1, 2018

This seems to be the offending code:
https://github.com/toddr/YAML-Syck/blob/master/handler.c#L59 in syck_hdlr_add_anchor:

st_insert( p->anchors, (st_data_t)a, (st_data_t)n );

The function gets called twice. Maybe it should check for

if (n->anchor != NULL)

and return a proper error message. Not sure though how errors are handled here.

@toddr
Copy link
Member

toddr commented Oct 26, 2020

Fixed by #48

@toddr toddr closed this as completed Oct 26, 2020
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

2 participants