Skip to content

Commit 94304e4

Browse files
authored
Merge pull request #358 from ISnowFoxI/fix/integer-overflow
Fixed integer overflow issue in slice function for android
2 parents 9632d6a + f007969 commit 94304e4

File tree

4 files changed

+7
-7
lines changed

4 files changed

+7
-7
lines changed

android/src/main/java/com/ReactNativeBlobUtil/ReactNativeBlobUtilFS.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -678,7 +678,7 @@ static void ls(String path, Promise promise) {
678678
* @param end End byte offset
679679
* @param encode NOT IMPLEMENTED
680680
*/
681-
static void slice(String path, String dest, int start, int end, String encode, Promise promise) {
681+
static void slice(String path, String dest, long start, long end, String encode, Promise promise) {
682682
try {
683683
dest = ReactNativeBlobUtilUtils.normalizePath(dest);
684684

@@ -696,13 +696,13 @@ static void slice(String path, String dest, int start, int end, String encode, P
696696
return;
697697
}
698698
FileOutputStream out = new FileOutputStream(new File(dest));
699-
int skipped = (int) in.skip(start);
699+
long skipped = in.skip(start);
700700
if (skipped != start) {
701701
promise.reject("EUNSPECIFIED", "Skipped " + skipped + " instead of the specified " + start + " bytes");
702702
return;
703703
}
704704
byte[] buffer = new byte[10240];
705-
int remain = end - start;
705+
int remain = (int) (end - start);
706706
while (remain > 0) {
707707
int read = in.read(buffer, 0, 10240);
708708
if (read <= 0) {

android/src/main/java/com/ReactNativeBlobUtil/ReactNativeBlobUtilImpl.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -294,7 +294,7 @@ public void cancelRequest(String taskId, Callback callback) {
294294
}
295295
}
296296

297-
public void slice(String src, String dest, int start, int end, Promise promise) {
297+
public void slice(String src, String dest, long start, long end, Promise promise) {
298298
ReactNativeBlobUtilFS.slice(src, dest, start, end, "", promise);
299299
}
300300

android/src/newarch/java/com/ReactNativeBlobUtil/ReactNativeBlobUtil.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -198,7 +198,7 @@ public void enableUploadProgressReport(String taskId, double interval, double co
198198

199199
@Override
200200
public void slice(String src, String dest, double start, double end, Promise promise) {
201-
delegate.slice(src, dest, (int) start, (int) end, promise);
201+
delegate.slice(src, dest, (long) start, (long) end, promise);
202202
}
203203

204204
@Override

android/src/oldarch/java/com/ReactNativeBlobUtil/ReactNativeBlobUtil.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -174,8 +174,8 @@ public void cancelRequest(String taskId, Callback callback) {
174174
}
175175

176176
@ReactMethod
177-
public void slice(String src, String dest, int start, int end, Promise promise) {
178-
delegate.slice(src, dest, start, end, promise);
177+
public void slice(String src, String dest, double start, double end, Promise promise) {
178+
delegate.slice(src, dest, (long) start, (long) end, promise);
179179
}
180180

181181
@ReactMethod

0 commit comments

Comments
 (0)