From 174df77359f22f3be2169e9bb04e8018015b5e94 Mon Sep 17 00:00:00 2001 From: Michael Brown Date: Mon, 8 Aug 2011 16:35:30 +0100 Subject: [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 Signed-off-by: Michael Brown --- src/image/script.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) (limited to 'src/image') diff --git a/src/image/script.c b/src/image/script.c index 161ac682..fb89e422 100644 --- a/src/image/script.c +++ b/src/image/script.c @@ -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; } -- cgit v1.2.3-55-g7522