Skip to content

Commit

Permalink
[script] Accept labels on lines terminated with CRLF
Browse files Browse the repository at this point in the history
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>
  • Loading branch information
mcb30 committed Aug 8, 2011
1 parent 8a86a84 commit 174df77
Showing 1 changed file with 7 additions and 1 deletion.
8 changes: 7 additions & 1 deletion src/image/script.c
Expand Up @@ -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;
}

Expand Down

0 comments on commit 174df77

Please sign in to comment.