OSDN Git Service

Object/WasmObjectFile: Fix comparison of different signs
authorMauro Rossi <issor.oruam@gmail.com>
Sat, 9 Jun 2018 21:08:43 +0000 (23:08 +0200)
committerMauro Rossi <issor.oruam@gmail.com>
Sun, 10 Jun 2018 20:53:30 +0000 (22:53 +0200)
Fixes the following building error:

external/llvm/lib/Object/WasmObjectFile.cpp:978:14:
error: comparison of integers of different signs:
'uint32_t' (aka 'unsigned int') and 'int' [-Werror,-Wsign-compare]
    if (Size > Ctx.End - Ctx.Ptr)
        ~~~~ ^ ~~~~~~~~~~~~~~~~~
1 error generated.

Fixes: 50617cfe72 ("[WebAssembly] Add more error checking to object file parsing")

lib/Object/WasmObjectFile.cpp

index 2f91a97..ba5e6ac 100644 (file)
@@ -975,7 +975,7 @@ Error WasmObjectFile::parseDataSection(ReadContext &Ctx) {
     if (Error Err = readInitExpr(Segment.Data.Offset, Ctx))
       return Err;
     uint32_t Size = readVaruint32(Ctx);
-    if (Size > Ctx.End - Ctx.Ptr)
+    if (Size > (uint32_t) (Ctx.End - Ctx.Ptr))
       return make_error<GenericBinaryError>("Invalid segment size",
                                             object_error::parse_failed);
     Segment.Data.Content = ArrayRef<uint8_t>(Ctx.Ptr, Size);