diff options
author | cinap_lenrek <cinap_lenrek@felloff.net> | 2015-03-12 17:29:17 +0100 |
---|---|---|
committer | cinap_lenrek <cinap_lenrek@felloff.net> | 2015-03-12 17:29:17 +0100 |
commit | 757354dac6d55d12f28a3a94c601e625cf89c5ac (patch) | |
tree | 918619b9e05b5369f1df474c1858fe62ac679817 /sys/src/cmd/ip/imap4d/msg.c | |
parent | 7e7cc2c8d78a1e5e61f6c71051f8039365314ec4 (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.c | 9 |
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) |