david/ipxe
david
/
ipxe
Archived
1
0
Fork 0

[script] Accept labels on lines terminated with CRLF

CRLF line terminators are allowed in scripts; the carriage return is
simply interpreted as trailing whitespace and so is ignored.  This
fails on lines containing script labels, since the label-finding code
checks for a line containing only the ":" marker and the label itself
(without any trailing whitespace).

Fix by allowing a label to be terminated by either a NUL or a
whitespace character.

Reported-by: Bovey Christian <Christian.Bovey@chuv.ch>
Signed-off-by: Michael Brown <mcb30@ipxe.org>
This commit is contained in:
Michael Brown 2011-08-08 16:35:30 +01:00
parent 8a86a848dc
commit 174df77359
1 changed files with 7 additions and 1 deletions

View File

@ -221,11 +221,17 @@ static const char *goto_label;
* @ret rc Return status code
*/
static int goto_find_label ( const char *line ) {
size_t len = strlen ( goto_label );
if ( line[0] != ':' )
return -ENOENT;
if ( strcmp ( goto_label, &line[1] ) != 0 )
if ( strncmp ( goto_label, &line[1], len ) != 0 )
return -ENOENT;
if ( line[ 1 + len ] && ! isspace ( line[ 1 + len ] ) )
return -ENOENT;
return 0;
}