ASR_BASE
Change-Id: Icf3719cc0afe3eeb3edc7fa80a2eb5199ca9dda1
diff --git a/package/utils/adbd/src/adb/b64_pton.c b/package/utils/adbd/src/adb/b64_pton.c
new file mode 100644
index 0000000..4ce2f4d
--- /dev/null
+++ b/package/utils/adbd/src/adb/b64_pton.c
@@ -0,0 +1,56 @@
+
+#include <ctype.h>
+
+int b64_pton(const char *src, unsigned char *dst, int dstsiz)
+{
+ int i, j, k;
+ unsigned int val3 = 0;
+ const char b64_tbl[] =
+ "\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff"
+ "\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff"
+ "\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x3e\xff\xff\xff\x3f"
+ "\x34\x35\x36\x37\x38\x39\x3a\x3b\x3c\x3d\xff\xff\xff\x00\xff\xff"
+ "\xff\x00\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0a\x0b\x0c\x0d\x0e"
+ "\x0f\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\xff\xff\xff\xff\xff"
+ "\xff\x1a\x1b\x1c\x1d\x1e\x1f\x20\x21\x22\x23\x24\x25\x26\x27\x28"
+ "\x29\x2a\x2b\x2c\x2d\x2e\x2f\x30\x31\x32\x33\xff\xff\xff\xff\xff"
+ "\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff"
+ "\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff"
+ "\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff"
+ "\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff"
+ "\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff"
+ "\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff"
+ "\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff"
+ "\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff";
+
+ for (i = j = k = 0; src[i] != '\0'; i++) {
+ if (isspace(src[i]))
+ continue;
+ if (b64_tbl[(unsigned char)src[i]] == (char)0xff)
+ return(-1);
+ val3 |= b64_tbl[(unsigned char)src[i]];
+ if (src[i] != '=') {
+ if (dst != 0 && k >= dstsiz)
+ return (-1);
+ if (j % 4 == 1) {
+ if (dst != 0)
+ dst[k] = val3 >> 4;
+ k++;
+ } else if (j % 4 == 2) {
+ if (dst != 0)
+ dst[k] = val3 >> 2;
+ k++;
+ } else if (j % 4 == 3) {
+ if (dst != 0)
+ dst[k] = val3;
+ k++;
+ }
+ }
+ val3 <<= 6;
+ j++;
+ }
+ if (j % 4 != 0)
+ return (-1);
+
+ return (k);
+}