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:
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;