diff options
| author | David M. Syzdek <david@syzdek.net> | 2022-09-10 03:21:48 -0800 |
|---|---|---|
| committer | David M. Syzdek <david@syzdek.net> | 2022-09-10 03:21:48 -0800 |
| commit | c00349e92fd6c2092382b2f2681e8e4cc3acaa4a (patch) | |
| tree | 1ee2daf64fb6b6565f91788827bd05edd9e348a1 | |
| parent | 8f4b732678514d1141d0c9bb773e1b79c72f1ca9 (diff) | |
| download | bindletools-c00349e92fd6c2092382b2f2681e8e4cc3acaa4a.tar.gz bindletools-c00349e92fd6c2092382b2f2681e8e4cc3acaa4a.tar.bz2 bindletools-c00349e92fd6c2092382b2f2681e8e4cc3acaa4a.tar.xz bindletools-c00349e92fd6c2092382b2f2681e8e4cc3acaa4a.zip | |
libbindle: fixing data length returned by bindle_base64_decode()
| -rw-r--r-- | lib/libbindle/lencoding.c | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/lib/libbindle/lencoding.c b/lib/libbindle/lencoding.c index f9bc041..c24623b 100644 --- a/lib/libbindle/lencoding.c +++ b/lib/libbindle/lencoding.c | |||
| @@ -638,6 +638,8 @@ bindle_base64_decode( | |||
| 638 | 638 | ||
| 639 | // byte 2 | 639 | // byte 2 |
| 640 | case 2: | 640 | case 2: |
| 641 | if (src[pos] == '=') | ||
| 642 | return((ssize_t)datlen-1); | ||
| 641 | dst[datlen-1] |= (map[(unsigned char)src[pos]] & 0x3c) >> 2; // 4 MSB | 643 | dst[datlen-1] |= (map[(unsigned char)src[pos]] & 0x3c) >> 2; // 4 MSB |
| 642 | dst[datlen++] = (map[(unsigned char)src[pos]] & 0x03) << 6; // 2 LSB | 644 | dst[datlen++] = (map[(unsigned char)src[pos]] & 0x03) << 6; // 2 LSB |
| 643 | break; | 645 | break; |
| @@ -645,6 +647,8 @@ bindle_base64_decode( | |||
| 645 | // byte 3 | 647 | // byte 3 |
| 646 | case 3: | 648 | case 3: |
| 647 | default: | 649 | default: |
| 650 | if (src[pos] == '=') | ||
| 651 | return((ssize_t)datlen-1); | ||
| 648 | dst[datlen-1] |= (map[(unsigned char)src[pos]] & 0x3f); // 1 MSB | 652 | dst[datlen-1] |= (map[(unsigned char)src[pos]] & 0x3f); // 1 MSB |
| 649 | break; | 653 | break; |
| 650 | }; | 654 | }; |
