X-Git-Url: https://git.tokkee.org/?a=blobdiff_plain;f=imap-send.c;h=65c71c602db022f65660b1c29f54ddd59a3b0363;hb=b32d37a3a6817ba307062fe2f7b6d9cfb85a1ebd;hp=ea56dc9ae5e2110c88a3538a9559a6e6d0adb23c;hpb=1cd88cc9e6d6f83fed554419166a52a900e6f9a5;p=git.git diff --git a/imap-send.c b/imap-send.c index ea56dc9ae..65c71c602 100644 --- a/imap-send.c +++ b/imap-send.c @@ -93,7 +93,7 @@ typedef struct { char *data; int len; unsigned char flags; - unsigned char crlf:1; + unsigned int crlf:1; } msg_data_t; #define DRV_OK 0 @@ -242,7 +242,7 @@ socket_read( Socket_t *sock, char *buf, int len ) } static int -socket_write( Socket_t *sock, char *buf, int len ) +socket_write( Socket_t *sock, const char *buf, int len ) { int n = write( sock->fd, buf, len ); if (n != len) { @@ -924,6 +924,7 @@ imap_open_store( imap_server_conf_t *srvc ) struct hostent *he; struct sockaddr_in addr; int s, a[2], preauth; + pid_t pid; ctx = xcalloc( sizeof(*ctx), 1 ); @@ -941,7 +942,10 @@ imap_open_store( imap_server_conf_t *srvc ) exit( 1 ); } - if (fork() == 0) { + pid = fork(); + if (pid < 0) + _exit( 127 ); + if (!pid) { if (dup2( a[0], 0 ) == -1 || dup2( a[0], 1 ) == -1) _exit( 127 ); close( a[0] ); @@ -1202,6 +1206,7 @@ read_message( FILE *f, msg_data_t *msg ) p = xrealloc(msg->data, len+1); if (!p) break; + msg->data = p; } r = fread( &msg->data[msg->len], 1, len - msg->len, f ); if (r <= 0)