mirror of
https://github.com/yarrick/iodine.git
synced 2024-11-26 10:09:19 +02:00
more comments
This commit is contained in:
parent
ba8f2cfac1
commit
331e1ab247
19
src/base64.c
19
src/base64.c
|
@ -59,15 +59,15 @@ findesc(int *count, unsigned char *esc, char c1, char c2, char c3, char c4)
|
||||||
int min1 = 0;
|
int min1 = 0;
|
||||||
int min2 = 0;
|
int min2 = 0;
|
||||||
|
|
||||||
int num1 = 0xFF;
|
int num1 = 0xFF; /* a very big number */
|
||||||
int num2 = 0xFE;
|
int num2 = 0xFE; /* a nearly as big number */
|
||||||
|
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
/* check if no more escapes needed */
|
/* check if no more escapes needed */
|
||||||
if (count[62] == 0 && count[63] == 0) {
|
if (count[62] == 0 && count[63] == 0) {
|
||||||
esc[0] = P62;
|
esc[0] = MODE;
|
||||||
esc[1] = P62;
|
esc[1] = MODE;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -130,9 +130,9 @@ escape_chars(char *buf, size_t buflen)
|
||||||
r[0] == esc[0] || r[1] == esc[0] ||r[2] == esc[0] ||r[2] == esc[0] ||
|
r[0] == esc[0] || r[1] == esc[0] ||r[2] == esc[0] ||r[2] == esc[0] ||
|
||||||
r[0] == esc[1] || r[1] == esc[1] ||r[2] == esc[1] ||r[2] == esc[1])) {
|
r[0] == esc[1] || r[1] == esc[1] ||r[2] == esc[1] ||r[2] == esc[1])) {
|
||||||
/* last set of escape chars were unused.
|
/* last set of escape chars were unused.
|
||||||
* if we reset last escape switch then we dont have to switch now */
|
* if we reset last escape switch then maybe we dont have to switch now */
|
||||||
|
|
||||||
/* change last ecape switch to 999 (RESET) */
|
/* change the latest escape switch to 999 (RESET) */
|
||||||
e[1] = MODE;
|
e[1] = MODE;
|
||||||
e[2] = MODE;
|
e[2] = MODE;
|
||||||
|
|
||||||
|
@ -142,6 +142,8 @@ escape_chars(char *buf, size_t buflen)
|
||||||
|
|
||||||
reset = 1;
|
reset = 1;
|
||||||
}
|
}
|
||||||
|
/* these two if blocks can not be combined because a block can contain both
|
||||||
|
* char 9 and/or . and the current escape chars. */
|
||||||
if (r[0] == esc[0] || r[1] == esc[0] ||r[2] == esc[0] ||r[2] == esc[0] ||
|
if (r[0] == esc[0] || r[1] == esc[0] ||r[2] == esc[0] ||r[2] == esc[0] ||
|
||||||
r[0] == esc[1] || r[1] == esc[1] ||r[2] == esc[1] ||r[2] == esc[1]) {
|
r[0] == esc[1] || r[1] == esc[1] ||r[2] == esc[1] ||r[2] == esc[1]) {
|
||||||
/* switch escape chars */
|
/* switch escape chars */
|
||||||
|
@ -160,11 +162,13 @@ escape_chars(char *buf, size_t buflen)
|
||||||
*w++ = esc[1];
|
*w++ = esc[1];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* update counter on remaining chars */
|
||||||
for (i = 0; i < 4; i++) {
|
for (i = 0; i < 4; i++) {
|
||||||
if (r[i])
|
if (r[i])
|
||||||
counter[REV64(r[i])]--;
|
counter[REV64(r[i])]--;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* do the escaping */
|
||||||
for (i = 0; i < 4; i++) {
|
for (i = 0; i < 4; i++) {
|
||||||
if (r[i] == P62) {
|
if (r[i] == P62) {
|
||||||
r[i] = esc[0];
|
r[i] = esc[0];
|
||||||
|
@ -175,6 +179,7 @@ escape_chars(char *buf, size_t buflen)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* copy back to buf */
|
||||||
*w++ = *r++;
|
*w++ = *r++;
|
||||||
*w++ = *r++;
|
*w++ = *r++;
|
||||||
*w++ = *r++;
|
*w++ = *r++;
|
||||||
|
@ -296,6 +301,7 @@ base64_decode(void *buf, size_t *buflen, const char *str, size_t slen)
|
||||||
|
|
||||||
q = buf;
|
q = buf;
|
||||||
for (p = str; *p; p += 4) {
|
for (p = str; *p; p += 4) {
|
||||||
|
/* handle escape instructions */
|
||||||
if (*p == MODE) {
|
if (*p == MODE) {
|
||||||
p++;
|
p++;
|
||||||
if (p[0] == MODE && p[1] == MODE) {
|
if (p[0] == MODE && p[1] == MODE) {
|
||||||
|
@ -309,6 +315,7 @@ base64_decode(void *buf, size_t *buflen, const char *str, size_t slen)
|
||||||
prot63 = *p++;
|
prot63 = *p++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
/* since the str is const, we unescape in another buf */
|
||||||
for (i = 0; i < 4; i++) {
|
for (i = 0; i < 4; i++) {
|
||||||
block[i] = p[i];
|
block[i] = p[i];
|
||||||
if (prot62 == block[i]) {
|
if (prot62 == block[i]) {
|
||||||
|
|
Loading…
Reference in New Issue