diff options
Diffstat (limited to 'stdlib')
-rw-r--r-- | stdlib/array.ml | 8 | ||||
-rw-r--r-- | stdlib/buffer.ml | 2 | ||||
-rw-r--r-- | stdlib/digest.ml | 2 | ||||
-rw-r--r-- | stdlib/marshal.ml | 8 | ||||
-rw-r--r-- | stdlib/pervasives.ml | 8 | ||||
-rw-r--r-- | stdlib/string.ml | 8 |
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 |