On Tue, Feb 9, 2010 at 1:09 PM, Hitoshi Mitake <mitake@xxxxxxxxxxxxxxxxxxxxx> wrote: > +static int auth_cram_md5(struct imap_store *ctx, struct imap_cmd *cmd, const char *prompt) > +{ > + int ret; > + char digest[DIGEST_HEX_LEN]; > + char buf[256], base64_out[256]; > + > + memset(buf, 0, 256); > + base64_decode(buf, prompt, strlen(prompt)); > + > + memset(digest, 0, DIGEST_HEX_LEN); > + md5_hex_hmac(digest, (const unsigned char *)buf, strlen(buf), > + (const unsigned char *)server.pass, strlen(server.pass)); > + > + memset(buf, 0, 256); > + strcpy(buf, server.user); > + strcpy(buf + strlen(buf), " "); > + strcpy(buf + strlen(buf), digest); > + memset(base64_out, 0, 256); > + base64_encode(base64_out, buf, strlen(buf)); > + > + ret = socket_write(&ctx->imap->buf.sock, base64_out, strlen(base64_out)); Since this is the only location in this function that accesses anything inside ctx, how about just passing the imap_socket itself to the function? That'd make it a bit simpler if, say, I was rewriting send-email in C and wanted to add CRAM-MD5 AUTH support (given that I'd done the work to use imap_socket first)... -- Erik "kusma" Faye-Lund -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html