From a66a0bff8336ed3a397c02f83f66c081ae59390c 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 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@357219 91177308-0d34-0410-b5e6-96231b3b80d8 --- test/tools/yaml2obj/empty.yaml | 5 +++++ tools/yaml2obj/yaml2obj.cpp | 5 ++++- 2 files changed, 9 insertions(+), 1 deletion(-) create mode 100644 test/tools/yaml2obj/empty.yaml diff --git a/test/tools/yaml2obj/empty.yaml b/test/tools/yaml2obj/empty.yaml new file mode 100644 index 00000000000..2debd187df2 --- /dev/null +++ b/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/tools/yaml2obj/yaml2obj.cpp b/tools/yaml2obj/yaml2obj.cpp index 58e69fd5a5b..ef35458a8f0 100644 --- a/tools/yaml2obj/yaml2obj.cpp +++ b/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.50.1