1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
| | diff --git a/main.cpp b/main.cpp
index 029f0e2..e40bce2 100644
--- a/main.cpp
+++ b/main.cpp
@@ -2455,12 +2455,6 @@ bool read_lba(
if (!check_device_type(dev, RKUSB_LOADER | RKUSB_MASKROM))
return false;
- if (uiLen % 512) {
- fprintf(stderr, "Length must be a multiple of sector size (%d)\n",
- SECTOR_SIZE);
- return false;
- }
- uiLen /= 512;
if (!bRet) {
fprintf(stderr, "Read LBA quit, creating comm object failed!\n");
@@ -3265,7 +3259,7 @@ bool handle_command(int argc, char *argv[], CRKScan *pScan) {
bRet = get_lba_from_gpt(master_gpt, argv[2], &lba, &lba_end);
if (bRet) {
bSuccess = read_lba(dev, (u32)lba,
- ((u32)(lba_end - lba + 1)) * 512, argv[3]);
+ (u32)(lba_end - lba + 1), argv[3]);
} else {
fprintf(stderr, "Could not find the %s partition\n", argv[2]);
}
@@ -3276,7 +3270,7 @@ bool handle_command(int argc, char *argv[], CRKScan *pScan) {
} else if (strcmp(strCmd.c_str(), "RL") == 0 ||
strcmp(strCmd.c_str(), "READ") == 0) {
char *pszEnd;
- UINT uiBegin, uiLen;
+ UINT uiBegin;
if (argc != 5)
fprintf(stderr, "Usage: rkdeveloptool read start-sector num-bytes "
"filename\n");
@@ -3285,11 +3279,15 @@ bool handle_command(int argc, char *argv[], CRKScan *pScan) {
if (*pszEnd)
fprintf(stderr, "Begin is invalid, please check!\n");
else {
- uiLen = strtoul(argv[3], &pszEnd, 0);
+ unsigned long long len = strtoull(argv[3], &pszEnd, 0);
if (*pszEnd)
fprintf(stderr, "Len is invalid, please check!\n");
- else {
- bSuccess = read_lba(dev, uiBegin, uiLen, argv[4]);
+ else if (len % 512) {
+ fprintf(stderr, "Length must be a multiple of sector size (%d)\n",
+ SECTOR_SIZE);
+ } else {
+ len /= 512;
+ bSuccess = read_lba(dev, uiBegin, len, argv[4]);
}
}
}
|