Skip to content

Commit

Permalink
fix make utils (safe string)
Browse files Browse the repository at this point in the history
  • Loading branch information
ygrek committed Aug 2, 2024
1 parent b89aafc commit 9f6599a
Show file tree
Hide file tree
Showing 3 changed files with 20 additions and 15 deletions.
2 changes: 2 additions & 0 deletions .github/workflows/workflow.yml
Original file line number Diff line number Diff line change
Expand Up @@ -62,6 +62,8 @@ jobs:

- run: opam exec -- make

- run: opam exec -- make utils

- name: Upload the build artifact
if: ${{ matrix.ocaml-version == '4.14.1' }}
uses: actions/upload-artifact@v4
Expand Down
4 changes: 2 additions & 2 deletions tools/get_range.ml
Original file line number Diff line number Diff line change
Expand Up @@ -72,7 +72,7 @@ let _ =
let len64 = min segment len in
let len = Int64.to_int len64 in
Unix32.read t begin_pos buffer 0 len;
let encoded = Base64.encode_substring buffer 0 len in
let encoded = Base64.encode_substring (Bytes.unsafe_to_string buffer) 0 len in
Printf.printf "[SEGMENT %s %Ld %d %d]\n" file_num begin_pos len (
String.length encoded);
output_string Pervasives.stdout encoded;
Expand All @@ -98,7 +98,7 @@ let _ =
let len64 = min segment len in
let len = Int64.to_int len64 in
Unix32.read t begin_pos buffer 0 len;
let encoded = String.sub buffer 0 len in
let encoded = Bytes.sub_string buffer 0 len in
Printf.printf "[SEGMENT 8bits %s %Ld %d %d]\n" file_num begin_pos len (
String.length encoded);
output_string Pervasives.stdout encoded;
Expand Down
29 changes: 16 additions & 13 deletions tools/mld_hash.ml
Original file line number Diff line number Diff line change
Expand Up @@ -56,11 +56,11 @@ let rec tiger_of_array array pos block =
else
let d1 = tiger_of_array array pos (block/2) in
let d2 = tiger_of_array array (pos+block/2) (block/2) in
let s = String.create (1 + Tiger.length * 2) in
let s = Bytes.create (1 + Tiger.length * 2) in
s.[0] <- '\001';
String.blit (TigerTree.direct_to_string d1) 0 s 1 Tiger.length;
String.blit (TigerTree.direct_to_string d2) 0 s (1+Tiger.length) Tiger.length;
let t = Tiger.string s in
let t = Tiger.string @@ Bytes.unsafe_to_string s in
let t = TigerTree.direct_of_string (Tiger.direct_to_string t) in
t

Expand Down Expand Up @@ -142,7 +142,7 @@ let ed2k_hash_file fd file_size =
let md4 = if nchunk_hashes = 0 then
Md4.digest_subfile fd zero file_size
else
let chunks = String.create (nchunks*16) in
let chunks = Bytes.create (nchunks*16) in
for i = 0 to nchunks - 1 do
let begin_pos = edk_block_size ** (Int64.of_int i) in
let end_pos = begin_pos ++ edk_block_size in
Expand All @@ -154,7 +154,7 @@ let ed2k_hash_file fd file_size =
let md4 = Md4.direct_to_string md4 in
String.blit md4 0 chunks (i*16) 16;
done;
Md4.string chunks
Md4.string @@ Bytes.unsafe_to_string chunks
in
md4

Expand Down Expand Up @@ -272,9 +272,9 @@ let sig2dat_hash_filename filename =
let file_size = Unix32.getsize64 fd in
let len64 = min 307200L file_size in
let len = Int64.to_int len64 in
let s = String.create len in
let s = Bytes.create len in
Unix32.read fd zero s 0 len;
let md5ext = Md5Ext.string s in
let md5ext = Md5Ext.string @@ Bytes.unsafe_to_string s in
lprintf "sig2dat://|File: %s|Length: %Ld Bytes|UUHash: %s|/\n"
(Url.encode (Filename.basename filename)) file_size (Md5Ext.to_string md5ext);
lprintf " Hash: %s\n" (Md5Ext.to_hexa_case false md5ext);
Expand Down Expand Up @@ -324,12 +324,12 @@ let check_external_functions file_size =

] in

let test_string = String.create test_string_len in
let test_string = Bytes.create test_string_len in
let rec iter pos =
if pos < test_string_len then
let end_pos = min test_string_len (2*pos) in
let len = end_pos - pos in
String.blit test_string 0 test_string pos len;
Bytes.blit test_string 0 test_string pos len;
iter end_pos
in

Expand Down Expand Up @@ -369,7 +369,7 @@ let check_external_functions file_size =

lprintf "Filling file\n";
List.iter (fun (pos, len) ->
Unix32.write file pos test_string 0 len;
Unix32.write_bytes file pos test_string 0 len;
) waves;

lprintf "Computing ed2k hash\n";
Expand Down Expand Up @@ -414,12 +414,15 @@ let diff_chunk args =
if end_pos -- begin_pos > max_diff_size then
failwith (Printf.sprintf "Cannot diff chunk > %Ld bytes" max_diff_size);
let len = Int64.to_int (end_pos -- begin_pos) in
let s1 = String.create len in
let s2 = String.create len in
let read_string fd pos len =
let s = Bytes.create len in
Unix32.read fd pos s 0 len;
Bytes.unsafe_to_string s
in
let fd1 = Unix32.create_ro filename1 in
let fd2 = Unix32.create_ro filename2 in
Unix32.read fd1 begin_pos s1 0 len;
Unix32.read fd2 begin_pos s2 0 len;
let s1 = read_string fd1 begin_pos len in
let s2 = read_string fd2 begin_pos len in

let rec iter_in old_pos pos =
if pos < len then
Expand Down

0 comments on commit 9f6599a

Please sign in to comment.