Oswald Buddenhagen 7 роки тому
батько
коміт
37feeddbfb
5 змінених файлів з 20 додано та 13 видалено
  1. 10 4
      src/drv_imap.c
  2. 3 3
      src/drv_maildir.c
  3. 4 4
      src/drv_proxy.c
  4. 2 1
      src/socket.c
  5. 1 1
      src/socket.h

+ 10 - 4
src/drv_imap.c

@@ -2927,7 +2927,7 @@ imap_find_new_msgs_p2( imap_store_t *ctx, imap_cmd_t *gcmd, int response )
 	cmd->uid = cmdp->uid;
 	cmd->gen.param.lastuid = 1;
 	imap_exec( ctx, &cmd->gen, imap_find_new_msgs_p3,
-	           "UID FETCH *:* (UID)" );
+	           "UID FETCH * (UID)" );
 }
 
 static void
@@ -3137,9 +3137,15 @@ imap_parse_store( conffile_t *cfg, store_conf_t **storep )
 			server->pass = nfstrdup( cfg->val );
 		else if (!strcasecmp( "PassCmd", cfg->cmd ))
 			server->pass_cmd = nfstrdup( cfg->val );
-		else if (!strcasecmp( "Port", cfg->cmd ))
-			server->sconf.port = parse_int( cfg );
-		else if (!strcasecmp( "Timeout", cfg->cmd ))
+		else if (!strcasecmp( "Port", cfg->cmd )) {
+			int port = parse_int( cfg );
+			if ((unsigned)port > 0xffff) {
+				error( "%s:%d: Invalid port number\n", cfg->file, cfg->line );
+				cfg->err = 1;
+			} else {
+				server->sconf.port = (ushort)port;
+			}
+		} else if (!strcasecmp( "Timeout", cfg->cmd ))
 			server->sconf.timeout = parse_int( cfg );
 		else if (!strcasecmp( "PipelineDepth", cfg->cmd )) {
 			if ((server->max_in_progress = parse_int( cfg )) < 1) {

+ 3 - 3
src/drv_maildir.c

@@ -1573,7 +1573,7 @@ maildir_store_msg( store_t *gctx, msg_data_t *data, int to_trash,
 	uint uid;
 	char buf[_POSIX_PATH_MAX], nbuf[_POSIX_PATH_MAX], fbuf[NUM_FLAGS + 3], base[128];
 
-	bl = nfsnprintf( base, sizeof(base), "%ld.%d_%d.%s", (long)time( 0 ), Pid, ++MaildirCount, Hostname );
+	bl = nfsnprintf( base, sizeof(base), "%lld.%d_%d.%s", (long long)time( 0 ), Pid, ++MaildirCount, Hostname );
 	if (!to_trash) {
 #ifdef USE_DB
 		if (ctx->usedb) {
@@ -1754,8 +1754,8 @@ maildir_trash_msg( store_t *gctx, message_t *gmsg,
 	for (;;) {
 		nfsnprintf( buf, sizeof(buf), "%s/%s/%s", ctx->path, subdirs[gmsg->status & M_RECENT], msg->base );
 		s = strstr( msg->base, ((maildir_store_conf_t *)gctx->conf)->info_prefix );
-		nfsnprintf( nbuf, sizeof(nbuf), "%s/%s/%ld.%d_%d.%s%s", ctx->trash,
-		            subdirs[gmsg->status & M_RECENT], (long)time( 0 ), Pid, ++MaildirCount, Hostname, s ? s : "" );
+		nfsnprintf( nbuf, sizeof(nbuf), "%s/%s/%lld.%d_%d.%s%s", ctx->trash,
+		            subdirs[gmsg->status & M_RECENT], (long long)time( 0 ), Pid, ++MaildirCount, Hostname, s ? s : "" );
 		if (!rename( buf, nbuf ))
 			break;
 		if (!stat( buf, &st )) {

+ 4 - 4
src/drv_proxy.c

@@ -242,8 +242,8 @@ proxy_@name@( store_t *gctx@decl_args@, void (*cb)( @decl_cb_args@void *aux ), v
 	static char fbuf[as(Flags) + 1];
 	proxy_make_flags( cmd->data->flags, fbuf );
 //# END
-//# DEFINE fetch_msg_print_fmt_cb_args , flags=%s, date=%ld, size=%d
-//# DEFINE fetch_msg_print_pass_cb_args , fbuf, cmd->data->date, cmd->data->len
+//# DEFINE fetch_msg_print_fmt_cb_args , flags=%s, date=%lld, size=%d
+//# DEFINE fetch_msg_print_pass_cb_args , fbuf, (long long)cmd->data->date, cmd->data->len
 //# DEFINE fetch_msg_print_cb_args
 	if (sts == DRV_OK && (DFlags & DEBUG_DRV_ALL)) {
 		printf( "%s=========\n", cmd->gen.ctx->label );
@@ -257,8 +257,8 @@ proxy_@name@( store_t *gctx@decl_args@, void (*cb)( @decl_cb_args@void *aux ), v
 	static char fbuf[as(Flags) + 1];
 	proxy_make_flags( data->flags, fbuf );
 //# END
-//# DEFINE store_msg_print_fmt_args , flags=%s, date=%ld, size=%d, to_trash=%s
-//# DEFINE store_msg_print_pass_args , fbuf, data->date, data->len, to_trash ? "yes" : "no"
+//# DEFINE store_msg_print_fmt_args , flags=%s, date=%lld, size=%d, to_trash=%s
+//# DEFINE store_msg_print_pass_args , fbuf, (long long)data->date, data->len, to_trash ? "yes" : "no"
 //# DEFINE store_msg_print_args
 	if (DFlags & DEBUG_DRV_ALL) {
 		printf( "%s>>>>>>>>>\n", ctx->label );

+ 2 - 1
src/socket.c

@@ -40,7 +40,8 @@
 # include <openssl/ssl.h>
 # include <openssl/err.h>
 # include <openssl/x509v3.h>
-# if OPENSSL_VERSION_NUMBER < 0x10100000L
+# if OPENSSL_VERSION_NUMBER < 0x10100000L \
+	|| (defined(LIBRESSL_VERSION_NUMBER) && LIBRESSL_VERSION_NUMBER >= 0x2070100fL)
 #  define X509_OBJECT_get0_X509(o) ((o)->data.x509)
 #  define X509_STORE_get0_objects(o) ((o)->objs)
 # endif

+ 1 - 1
src/socket.h

@@ -43,7 +43,7 @@ enum {
 typedef struct {
 	char *tunnel;
 	char *host;
-	int port;
+	ushort port;
 	int timeout;
 #ifdef HAVE_LIBSSL
 	char *cert_file;