summaryrefslogtreecommitdiff
path: root/sys/src/cmd/ip/imap4d/msg.c
diff options
context:
space:
mode:
authorcinap_lenrek <cinap_lenrek@felloff.net>2015-03-12 17:29:17 +0100
committercinap_lenrek <cinap_lenrek@felloff.net>2015-03-12 17:29:17 +0100
commit757354dac6d55d12f28a3a94c601e625cf89c5ac (patch)
tree918619b9e05b5369f1df474c1858fe62ac679817 /sys/src/cmd/ip/imap4d/msg.c
parent7e7cc2c8d78a1e5e61f6c71051f8039365314ec4 (diff)
imap4d: simplify auth code using encodefmt(), use readn() to get multiple of 3*18 in base64 input buffer
Diffstat (limited to 'sys/src/cmd/ip/imap4d/msg.c')
-rw-r--r--sys/src/cmd/ip/imap4d/msg.c9
1 files changed, 5 insertions, 4 deletions
diff --git a/sys/src/cmd/ip/imap4d/msg.c b/sys/src/cmd/ip/imap4d/msg.c
index 3a78fc63c..46ccea2e5 100644
--- a/sys/src/cmd/ip/imap4d/msg.c
+++ b/sys/src/cmd/ip/imap4d/msg.c
@@ -596,17 +596,18 @@ enc64x18(char *out, int lim, uchar *in, int n)
{
int m, mm, nn;
- nn = 0;
- for(; n > 0; n -= m){
+ for(nn = 0; n > 0; n -= m, nn += mm){
m = 18 * 3;
if(m > n)
m = n;
+ nn += 2; /* \r\n */
+ assert(nn < lim);
mm = enc64(out, lim - nn, in, m);
+ assert(mm > 0);
in += m;
out += mm;
*out++ = '\r';
*out++ = '\n';
- nn += mm + 2;
}
return nn;
}
@@ -619,7 +620,7 @@ body64(int in, int out)
int m, n;
for(;;){
- n = read(in, buf, sizeof(buf));
+ n = readn(in, buf, sizeof(buf));
if(n < 0)
return;
if(n == 0)