summaryrefslogtreecommitdiffstats
path: root/stdlib
diff options
context:
space:
mode:
Diffstat (limited to 'stdlib')
-rw-r--r--stdlib/array.ml8
-rw-r--r--stdlib/buffer.ml2
-rw-r--r--stdlib/digest.ml2
-rw-r--r--stdlib/marshal.ml8
-rw-r--r--stdlib/pervasives.ml8
-rw-r--r--stdlib/string.ml8
6 files changed, 18 insertions, 18 deletions
diff --git a/stdlib/array.ml b/stdlib/array.ml
index 175a3516f..20d949675 100644
--- a/stdlib/array.ml
+++ b/stdlib/array.ml
@@ -85,7 +85,7 @@ let concat al =
in find_init al
let sub a ofs len =
- if ofs < 0 || len < 0 || ofs + len > length a then invalid_arg "Array.sub"
+ if ofs < 0 || len < 0 || ofs > length a - len then invalid_arg "Array.sub"
else if len = 0 then [||]
else begin
let r = create len (unsafe_get a ofs) in
@@ -94,13 +94,13 @@ let sub a ofs len =
end
let fill a ofs len v =
- if ofs < 0 || len < 0 || ofs + len > length a
+ if ofs < 0 || len < 0 || ofs > length a - len
then invalid_arg "Array.fill"
else for i = ofs to ofs + len - 1 do unsafe_set a i v done
let blit a1 ofs1 a2 ofs2 len =
- if len < 0 || ofs1 < 0 || ofs1 + len > length a1
- || ofs2 < 0 || ofs2 + len > length a2
+ if len < 0 || ofs1 < 0 || ofs1 > length a1 - len
+ || ofs2 < 0 || ofs2 > length a2 - len
then invalid_arg "Array.blit"
else if ofs1 < ofs2 then
(* Top-down copy *)
diff --git a/stdlib/buffer.ml b/stdlib/buffer.ml
index 855c81d61..e31b7b80a 100644
--- a/stdlib/buffer.ml
+++ b/stdlib/buffer.ml
@@ -56,7 +56,7 @@ let add_char b c =
b.position <- pos + 1
let add_substring b s offset len =
- if offset < 0 || len < 0 || offset + len > String.length s
+ if offset < 0 || len < 0 || offset > String.length s - len
then invalid_arg "Buffer.add_substring";
let new_position = b.position + len in
if new_position > b.length then resize b len;
diff --git a/stdlib/digest.ml b/stdlib/digest.ml
index 29d1295c7..04603303b 100644
--- a/stdlib/digest.ml
+++ b/stdlib/digest.ml
@@ -24,7 +24,7 @@ let string str =
unsafe_string str 0 (String.length str)
let substring str ofs len =
- if ofs < 0 || len < 0 || ofs + len > String.length str
+ if ofs < 0 || len < 0 || ofs > String.length str - len
then invalid_arg "Digest.substring"
else unsafe_string str ofs len
diff --git a/stdlib/marshal.ml b/stdlib/marshal.ml
index e248c468d..ffe397dec 100644
--- a/stdlib/marshal.ml
+++ b/stdlib/marshal.ml
@@ -26,7 +26,7 @@ external to_buffer_unsafe:
= "output_value_to_buffer"
let to_buffer buff ofs len v flags =
- if ofs < 0 || len < 0 || ofs + len > String.length buff
+ if ofs < 0 || len < 0 || ofs > String.length buff - len
then invalid_arg "Marshal.to_buffer: substring out of bounds"
else to_buffer_unsafe buff ofs len v flags
@@ -36,17 +36,17 @@ external data_size_unsafe: string -> int -> int = "marshal_data_size"
let header_size = 20
let data_size buff ofs =
- if ofs < 0 || ofs + header_size > String.length buff
+ if ofs < 0 || ofs > String.length buff - header_size
then invalid_arg "Marshal.data_size"
else data_size_unsafe buff ofs
let total_size buff ofs = header_size + data_size buff ofs
let from_string buff ofs =
- if ofs < 0 || ofs + header_size > String.length buff
+ if ofs < 0 || ofs > String.length buff - header_size
then invalid_arg "Marshal.from_size"
else begin
let len = data_size_unsafe buff ofs in
- if ofs + header_size + len > String.length buff
+ if ofs > String.length buff - (header_size + len)
then invalid_arg "Marshal.from_string"
else from_string_unsafe buff ofs
end
diff --git a/stdlib/pervasives.ml b/stdlib/pervasives.ml
index b048ef33a..66822723a 100644
--- a/stdlib/pervasives.ml
+++ b/stdlib/pervasives.ml
@@ -153,7 +153,7 @@ let (^) s1 s2 =
external int_of_char : char -> int = "%identity"
external unsafe_char_of_int : int -> char = "%identity"
let char_of_int n =
- if n < 0 or n > 255 then invalid_arg "char_of_int" else unsafe_char_of_int n
+ if n < 0 || n > 255 then invalid_arg "char_of_int" else unsafe_char_of_int n
(* Unit operations *)
@@ -255,7 +255,7 @@ let output_string oc s =
unsafe_output oc s 0 (string_length s)
let output oc s ofs len =
- if ofs < 0 || len < 0 || ofs + len > string_length s
+ if ofs < 0 || len < 0 || ofs > string_length s - len
then invalid_arg "output"
else unsafe_output oc s ofs len
@@ -291,7 +291,7 @@ external unsafe_input : in_channel -> string -> int -> int -> int
= "caml_input"
let input ic s ofs len =
- if ofs < 0 || len < 0 || ofs + len > string_length s
+ if ofs < 0 || len < 0 || ofs > string_length s - len
then invalid_arg "input"
else unsafe_input ic s ofs len
@@ -304,7 +304,7 @@ let rec unsafe_really_input ic s ofs len =
end
let really_input ic s ofs len =
- if ofs < 0 || len < 0 || ofs + len > string_length s
+ if ofs < 0 || len < 0 || ofs > string_length s - len
then invalid_arg "really_input"
else unsafe_really_input ic s ofs len
diff --git a/stdlib/string.ml b/stdlib/string.ml
index 2cdb83b34..6f2495c7e 100644
--- a/stdlib/string.ml
+++ b/stdlib/string.ml
@@ -38,7 +38,7 @@ let copy s =
r
let sub s ofs len =
- if ofs < 0 || len < 0 || ofs + len > length s
+ if ofs < 0 || len < 0 || ofs > length s - len
then invalid_arg "String.sub"
else begin
let r = create len in
@@ -47,13 +47,13 @@ let sub s ofs len =
end
let fill s ofs len c =
- if ofs < 0 || len < 0 || ofs + len > length s
+ if ofs < 0 || len < 0 || ofs > length s - len
then invalid_arg "String.fill"
else unsafe_fill s ofs len c
let blit s1 ofs1 s2 ofs2 len =
- if len < 0 || ofs1 < 0 || ofs1 + len > length s1
- || ofs2 < 0 || ofs2 + len > length s2
+ if len < 0 || ofs1 < 0 || ofs1 > length s1 - len
+ || ofs2 < 0 || ofs2 > length s2 - len
then invalid_arg "String.blit"
else unsafe_blit s1 ofs1 s2 ofs2 len