summaryrefslogtreecommitdiffstats
path: root/discover/grub2
diff options
context:
space:
mode:
authorJeremy Kerr <jk@ozlabs.org>2014-06-04 15:45:53 +0800
committerJeremy Kerr <jk@ozlabs.org>2014-06-05 15:25:10 +0800
commit8c430d0509a2f1f5dc64de308d1c1d2668d2031b (patch)
tree18cb9a8671f977e49c0aab70e718e9ecd224b8cf /discover/grub2
parentdcc2bd8913d3741614e971b0be12f490d8334538 (diff)
downloadtalos-petitboot-8c430d0509a2f1f5dc64de308d1c1d2668d2031b.tar.gz
talos-petitboot-8c430d0509a2f1f5dc64de308d1c1d2668d2031b.zip
grub2: fix empty file handling
Currently, we have a bug when parsing zero-length files: we subtract one from the length to exclude the trailing NUL (added by read_file), but a zero-length file will result in a length of -1. This change adds an explicit exit if we're attempting to parse an empty file. Signed-off-by: Jeremy Kerr <jk@ozlabs.org>
Diffstat (limited to 'discover/grub2')
-rw-r--r--discover/grub2/parser.y3
1 files changed, 3 insertions, 0 deletions
diff --git a/discover/grub2/parser.y b/discover/grub2/parser.y
index 23bf427..9d79d9b 100644
--- a/discover/grub2/parser.y
+++ b/discover/grub2/parser.y
@@ -329,6 +329,9 @@ void grub2_parser_parse(struct grub2_parser *parser, const char *filename,
YY_BUFFER_STATE bufstate;
int rc;
+ if (!len)
+ return;
+
parser->script->filename = filename;
bufstate = yy_scan_bytes(buf, len - 1, parser->scanner);
OpenPOWER on IntegriCloud