id	summary	reporter	owner	description	type	status	priority	component	severity	resolution	keywords	cc
165	parser.c can possibly dereference NULL pointer	anonymous	xi	"The following code is called in several locations in parser.c

 if (first) {
        token = PEEK_TOKEN(parser);
        if (!PUSH(parser, parser->marks, token->start_mark))
            return 0;
        SKIP_TOKEN(parser);
    }

PEEK_TOKEN is defined as
((parser->token_available || yaml_parser_fetch_more_tokens(parser)) ?       \
        parser->tokens.head : NULL)
which can return NULL. This suggests that token->start_mark could cause a segfault if token is NULL.

This is hypothetical only and the checks in PEEK_TOKEN may render the situation impossible.

Output from clang --analyze parser.c below giving line numbers. 

parser.c:733:14: warning: Dereference of null pointer
        if (!PUSH(parser, parser->marks, token->start_mark))
             ^
parser.c:733:49: note: instantiated from:
        if (!PUSH(parser, parser->marks, token->start_mark))
                                                ^
parser.c:842:14: warning: Dereference of null pointer
        if (!PUSH(parser, parser->marks, token->start_mark))
             ^
parser.c:842:49: note: instantiated from:
        if (!PUSH(parser, parser->marks, token->start_mark))
                                                ^
parser.c:959:14: warning: Dereference of null pointer
        if (!PUSH(parser, parser->marks, token->start_mark))
             ^
parser.c:959:49: note: instantiated from:
        if (!PUSH(parser, parser->marks, token->start_mark))
                                                ^
parser.c:1111:14: warning: Dereference of null pointer
        if (!PUSH(parser, parser->marks, token->start_mark))
             ^
parser.c:1111:49: note: instantiated from:
        if (!PUSH(parser, parser->marks, token->start_mark))
                                                ^
"	defect	new	low	libyaml	normal			
