|
|
a6d65f1 |
--- cyrus-imapd-2.3.13/lib/libcyr_cfg.h.authid_normalize 2008-07-30 18:03:39.000000000 +0200
|
|
|
a6d65f1 |
+++ cyrus-imapd-2.3.13/lib/libcyr_cfg.h 2009-01-13 11:41:59.000000000 +0100
|
|
|
771844d |
@@ -112,6 +112,8 @@ enum cyrus_opt {
|
|
|
771844d |
CYRUSOPT_SQL_PASSWD,
|
|
|
771844d |
/* Secure SQL connection (OFF) */
|
|
|
771844d |
CYRUSOPT_SQL_USESSL,
|
|
|
a6d65f1 |
+ /* Lowercase uid and strip leading and trailing blanks (OFF) */
|
|
|
a6d65f1 |
+ CYRUSOPT_NORMALIZEUID,
|
|
|
771844d |
|
|
|
771844d |
CYRUSOPT_LAST
|
|
|
771844d |
|
|
|
a6d65f1 |
--- cyrus-imapd-2.3.13/lib/auth_unix.c.authid_normalize 2009-01-13 11:38:08.000000000 +0100
|
|
|
a6d65f1 |
+++ cyrus-imapd-2.3.13/lib/auth_unix.c 2009-01-13 11:38:08.000000000 +0100
|
|
|
a6d65f1 |
@@ -155,10 +155,12 @@
|
|
|
cf58a5c |
size_t len;
|
|
|
cf58a5c |
{
|
|
|
cf58a5c |
static char retbuf[81];
|
|
|
cf58a5c |
+ char backup[81];
|
|
|
cf58a5c |
struct group *grp;
|
|
|
cf58a5c |
char sawalpha;
|
|
|
cf58a5c |
char *p;
|
|
|
cf58a5c |
int username_tolower = 0;
|
|
|
cf58a5c |
+ int ic,rbc;
|
|
|
cf58a5c |
|
|
|
cf58a5c |
if(!len) len = strlen(identifier);
|
|
|
cf58a5c |
if(len >= sizeof(retbuf)) return NULL;
|
|
|
cf58a5c |
@@ -210,6 +212,22 @@
|
|
|
cf58a5c |
/* now we don't */
|
|
|
cf58a5c |
/* if (!sawalpha) return NULL; */
|
|
|
cf58a5c |
|
|
|
cf58a5c |
+ if( (libcyrus_config_getswitch(CYRUSOPT_NORMALIZEUID) == 1) ) {
|
|
|
cf58a5c |
+ strcpy(backup,retbuf);
|
|
|
cf58a5c |
+ /* remove leading blanks */
|
|
|
cf58a5c |
+ for(ic=0; isblank(backup[ic]); ic++);
|
|
|
cf58a5c |
+ for(rbc=0; backup[ic]; ic++) {
|
|
|
cf58a5c |
+ retbuf[rbc] = ( isalpha(backup[ic]) ?
|
|
|
cf58a5c |
+ tolower(backup[ic]) : backup[ic] );
|
|
|
cf58a5c |
+ rbc++;
|
|
|
cf58a5c |
+ }
|
|
|
cf58a5c |
+ retbuf[rbc] = '\0';
|
|
|
cf58a5c |
+ /* remove trailing blanks */
|
|
|
cf58a5c |
+ for(--rbc; isblank(retbuf[rbc]); rbc--) {
|
|
|
cf58a5c |
+ retbuf[rbc] = '\0';
|
|
|
cf58a5c |
+ }
|
|
|
cf58a5c |
+ }
|
|
|
cf58a5c |
+
|
|
|
cf58a5c |
return retbuf;
|
|
|
cf58a5c |
}
|
|
|
cf58a5c |
|
|
|
a6d65f1 |
--- cyrus-imapd-2.3.13/lib/imapoptions.authid_normalize 2009-01-13 11:38:08.000000000 +0100
|
|
|
a6d65f1 |
+++ cyrus-imapd-2.3.13/lib/imapoptions 2009-01-13 11:38:08.000000000 +0100
|
|
|
a6d65f1 |
@@ -1182,6 +1182,11 @@
|
|
|
cf58a5c |
interface, otherwise the user is assumed to be in the default
|
|
|
cf58a5c |
domain (if set). */
|
|
|
cf58a5c |
|
|
|
cf58a5c |
+{ "normalizeuid", 0, SWITCH }
|
|
|
cf58a5c |
+/* Lowercase uid and strip leading and trailing blanks. It is recommended
|
|
|
cf58a5c |
+ to set this to yes, especially if OpenLDAP is used as authentication
|
|
|
cf58a5c |
+ source. */
|
|
|
cf58a5c |
+
|
|
|
cf58a5c |
/*
|
|
|
cf58a5c |
.SH SEE ALSO
|
|
|
cf58a5c |
.PP
|
|
|
a6d65f1 |
--- cyrus-imapd-2.3.13/lib/libcyr_cfg.c.authid_normalize 2008-07-30 18:03:38.000000000 +0200
|
|
|
a6d65f1 |
+++ cyrus-imapd-2.3.13/lib/libcyr_cfg.c 2009-01-13 11:38:08.000000000 +0100
|
|
|
a6d65f1 |
@@ -150,6 +150,11 @@
|
|
|
a6d65f1 |
CFGVAL(long, 0),
|
|
|
a6d65f1 |
CYRUS_OPT_SWITCH },
|
|
|
cf58a5c |
|
|
|
cf58a5c |
+ { CYRUSOPT_NORMALIZEUID,
|
|
|
cf58a5c |
+ CFGVAL(long, 1),
|
|
|
cf58a5c |
+ CYRUS_OPT_SWITCH },
|
|
|
cf58a5c |
+
|
|
|
cf58a5c |
+
|
|
|
cf58a5c |
{ CYRUSOPT_LAST, { NULL }, CYRUS_OPT_NOTOPT }
|
|
|
cf58a5c |
};
|
|
|
cf58a5c |
|