[spice-common] codegen: Check unsafe values alone

Submitted by Frediano Ziglio on Oct. 18, 2019, 2:59 p.m.

Details

Message ID 20191018145907.11122-2-fziglio@redhat.com
State New
Headers show
Series "codegen: Ignore path generating include guards" ( rev: 2 ) in Spice

Not browsing as part of any series.

Commit Message

Frediano Ziglio Oct. 18, 2019, 2:59 p.m.
This rule remove possible integer overflows.
Current code generated is not affected by these integer overflows
as the computations are done using 64 bit but better safe then sorry.

Signed-off-by: Frediano Ziglio <fziglio@redhat.com>
---
 python_modules/demarshal.py | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

Patch hide | download patch | download mbox

diff --git a/python_modules/demarshal.py b/python_modules/demarshal.py
index 3736976..b27eb75 100644
--- a/python_modules/demarshal.py
+++ b/python_modules/demarshal.py
@@ -229,7 +229,7 @@  def write_validate_struct_function(writer, struct):
         writer.statement("return 0")
 
     writer.newline()
-    writer.error_check("start >= message_end")
+    writer.error_check("offset >= (uintptr_t) (message_end - message_start)")
 
     writer.newline()
     write_validate_container(writer, None, struct, "start", scope, True, True, False)
@@ -283,7 +283,7 @@  def write_validate_pointer_item(writer, container, item, scope, parent_scope, st
             else:
                 write_validate_array_item(writer, container, array_item, scope, parent_scope, start,
                                           True, want_mem_size=need_mem_size, want_extra_size=False)
-                writer.error_check("%s + %s > (uintptr_t) (message_end - message_start)" % (v, array_item.nw_size()))
+                writer.error_check("%s > (uintptr_t) (message_end - message_start - %s)" % (array_item.nw_size(), v))
 
             if want_extra_size:
                 if item.member and item.member.has_attr("chunk"):