From 6c826957532816b4c7d69306aa184372a1c9c698 Mon Sep 17 00:00:00 2001 From: Puyan Lotfi Date: Thu, 28 Mar 2019 22:55:08 +0000 Subject: [PATCH] [yaml2obj] Fixing opening empty yaml files. Essentially echo "" | yaml2obj crashes. This patch attempts to trim whitespace and determine if the yaml string in the file is empty or not. If the input is empty then it will not properly print out an error message and return an error code. Differential Revision: https://reviews.llvm.org/D59964 A test/tools/yaml2obj/empty.yaml M tools/yaml2obj/yaml2obj.cpp llvm-svn: 357219 --- llvm/test/tools/yaml2obj/empty.yaml | 5 +++++ llvm/tools/yaml2obj/yaml2obj.cpp | 5 ++++- 2 files changed, 9 insertions(+), 1 deletion(-) create mode 100644 llvm/test/tools/yaml2obj/empty.yaml diff --git a/llvm/test/tools/yaml2obj/empty.yaml b/llvm/test/tools/yaml2obj/empty.yaml new file mode 100644 index 0000000..2debd18 --- /dev/null +++ b/llvm/test/tools/yaml2obj/empty.yaml @@ -0,0 +1,5 @@ +# RUN: echo "" | not yaml2obj 2>&1 | FileCheck %s +# RUN: echo -n "" | not yaml2obj 2>&1 | FileCheck %s +# RUN: echo " " | not yaml2obj 2>&1 | FileCheck %s +# RUN: echo " " | not yaml2obj 2>&1 | FileCheck %s +# CHECK: yaml2obj: Error opening '-': Empty File. diff --git a/llvm/tools/yaml2obj/yaml2obj.cpp b/llvm/tools/yaml2obj/yaml2obj.cpp index 58e69fd..ef35458 100644 --- a/llvm/tools/yaml2obj/yaml2obj.cpp +++ b/llvm/tools/yaml2obj/yaml2obj.cpp @@ -86,7 +86,10 @@ int main(int argc, char **argv) { if (!Buf) return 1; - yaml::Input YIn(Buf.get()->getBuffer()); + StringRef Buffer = Buf.get()->getBuffer(); + if (Buffer.trim().size() == 0) + error("yaml2obj: Error opening '" + Input + "': Empty File."); + yaml::Input YIn(Buffer); int Res = convertYAML(YIn, Out->os()); if (Res == 0) -- 2.7.4