Reviewers: Jakob, ulan,

Message:
PTAL.

Description:
Harden NumberToSize against overflows.

The callers to NumberToSize are supposed to validate the number, but
this adds a last line of defense.

[email protected],[email protected]

Please review this at https://codereview.chromium.org/72323003/

SVN Base: https://v8.googlecode.com/svn/branches/bleeding_edge

Affected files (+5, -0 lines):
  M src/v8conversions.h


Index: src/v8conversions.h
diff --git a/src/v8conversions.h b/src/v8conversions.h
index 3a7b5242ab79af659b15e99b0a6d53f967cd91d1..f3d0992d62b2ccb030b54f260cce604d0ec20ec5 100644
--- a/src/v8conversions.h
+++ b/src/v8conversions.h
@@ -60,10 +60,15 @@ inline size_t NumberToSize(Isolate* isolate,
                            Object* number) {
   SealHandleScope shs(isolate);
   if (number->IsSmi()) {
+    int value = Smi::cast(number)->value();
+    CHECK(value >= 0
+ && static_cast<unsigned>(value) <= std::numeric_limits<size_t>::max());
     return Smi::cast(number)->value();
   } else {
     ASSERT(number->IsHeapNumber());
     double value = HeapNumber::cast(number)->value();
+    CHECK(value >= 0 &&
+        value <= std::numeric_limits<size_t>::max());
     return static_cast<size_t>(value);
   }
 }


--
--
v8-dev mailing list
[email protected]
http://groups.google.com/group/v8-dev
--- You received this message because you are subscribed to the Google Groups "v8-dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/groups/opt_out.

Reply via email to