isync

mailbox synchronization program
git clone https://git.code.sf.net/p/isync/isync
Log | Files | Refs | README | LICENSE

commit f698f16967ae8341ff4b506f96b8cd5790c05d27
parent 470210fa864a56d0f46aa97ba6cc70e703b7432a
Author: Oswald Buddenhagen <ossi@users.sf.net>
Date:   Sun,  1 Jul 2018 13:22:17 +0200

fix type of 'port' and check its range in config reader

Diffstat:
Msrc/drv_imap.c | 12+++++++++---
Msrc/socket.h | 2+-
2 files changed, 10 insertions(+), 4 deletions(-)

diff --git a/src/drv_imap.c b/src/drv_imap.c @@ -3132,9 +3132,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) { diff --git a/src/socket.h b/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;