changelog shortlog tags files raw

changeset: managesieve: non-NULL default capability

changeset 840: 58e512ea83a0
parent 839:191bfdc5a6d0
child 841:ec5eba23c839
author: Simon Horman <horms@verge.net.au>
date: Sat Jul 10 09:07:36 2010 +0900 (7 weeks ago)
files: perdition/managesieve.c perdition/options.h
description: managesieve: non-NULL default capability

Perdition exits with a segmentation fault very early on
when run in managesieve mode. This is because the default
capability is NULL and the capability code expects non-NULL.

This patch addresses the problem by setting the default capability
to a non-NULL value.

Reported-by: Filipe Carvalho <filipec@fe.up.pt>
Tested-by: Filipe Carvalho <filipec@fe.up.pt>
Signed-off-by: Simon Horman <horms@verge.net.au>
       1--- a/perdition/managesieve.c	Tue Jul 06 10:58:05 2010 +0900
       2+++ b/perdition/managesieve.c	Sat Jul 10 09:07:36 2010 +0900
       3@@ -229,12 +229,8 @@
       4 char *managesieve_capability(flag_t tls_flags, flag_t tls_state)
       5 {
       6 	flag_t mode;
       7-	char *capability = NULL;
       8+	char *capability;
       9 	char *old_capability;
      10-
      11-	capability = opt.managesieve_capability;
      12-	if (!strcmp(capability, PERDITION_PROTOCOL_DEPENDANT))
      13-		capability = MANAGESIEVE_DEFAULT_CAPA;
      14 
      15 	if ((tls_flags & SSL_MODE_TLS_LISTEN) &&
      16 	    !(tls_state & SSL_MODE_TLS_LISTEN))
      17@@ -242,7 +238,7 @@
      18 	else
      19 		mode = PROTOCOL_C_DEL;
      20 
      21-	capability = protocol_capability(mode, capability,
      22+	capability = protocol_capability(mode, opt.managesieve_capability,
      23 					MANAGESIEVE_CAPA_STARTTLS,
      24 					MANAGESIEVE_CAPA_DELIMITER);
      25 	if (!capability) {
     1.1--- a/perdition/options.h	Tue Jul 06 10:58:05 2010 +0900
     1.2+++ b/perdition/options.h	Sat Jul 10 09:07:36 2010 +0900
     1.3@@ -35,6 +35,8 @@
     1.4 #include <vanessa_adt.h>
     1.5 #include <popt.h>
     1.6 
     1.7+#include "managesieve_write.h"
     1.8+
     1.9 #ifdef HAVE_CONFIG_H
    1.10 #include "config.h"
    1.11 #endif
    1.12@@ -130,7 +132,7 @@
    1.13 #define DEFAULT_LOG_FACILITY                 "mail"
    1.14 #define DEFAULT_LOGIN_DISABLED               0
    1.15 #define DEFAULT_LOWER_CASE                   STATE_NONE
    1.16-#define DEFAULT_MANAGESIEVE_CAPABILITY       NULL
    1.17+#define DEFAULT_MANAGESIEVE_CAPABILITY       MANAGESIEVE_DEFAULT_CAPA
    1.18 #define DEFAULT_MAP_LIB_OPT                  NULL
    1.19 #define DEFAULT_NO_BIND_BANNER               0
    1.20 #define DEFAULT_NO_DAEMON                    0