dovecot-2.2: lib-master: Removed fixed length limit for session-id.
dovecot at dovecot.org
dovecot at dovecot.org
Thu Oct 30 01:34:50 UTC 2014
details: http://hg.dovecot.org/dovecot-2.2/rev/fbc969e1543b
changeset: 18043:fbc969e1543b
user: Timo Sirainen <tss at iki.fi>
date: Wed Oct 29 18:32:36 2014 -0700
description:
lib-master: Removed fixed length limit for session-id.
diffstat:
src/lib-master/master-login.c | 7 ++-----
src/lib-master/master-login.h | 4 +---
2 files changed, 3 insertions(+), 8 deletions(-)
diffs (51 lines):
diff -r f21d7614ac0d -r fbc969e1543b src/lib-master/master-login.c
--- a/src/lib-master/master-login.c Wed Oct 29 11:46:50 2014 -0700
+++ b/src/lib-master/master-login.c Wed Oct 29 18:32:36 2014 -0700
@@ -192,6 +192,7 @@
client->conn->refcount--;
}
master_login_conn_unref(&client->conn);
+ i_free(client->session_id);
i_free(client);
}
@@ -419,10 +420,6 @@
break;
}
}
- if (session_len >= sizeof(client->session_id)) {
- i_error("login client: Session ID too long");
- session_len = 0;
- }
/* @UNSAFE: we have a request. do userdb lookup for it. */
req.data_size -= i;
@@ -430,7 +427,7 @@
client->conn = conn;
client->fd = client_fd;
client->auth_req = req;
- memcpy(client->session_id, data, session_len);
+ client->session_id = i_strndup(data, session_len);
memcpy(client->data, data+i, req.data_size);
conn->refcount++;
diff -r f21d7614ac0d -r fbc969e1543b src/lib-master/master-login.h
--- a/src/lib-master/master-login.h Wed Oct 29 11:46:50 2014 -0700
+++ b/src/lib-master/master-login.h Wed Oct 29 18:32:36 2014 -0700
@@ -4,15 +4,13 @@
#include "master-auth.h"
#define MASTER_POSTLOGIN_TIMEOUT_DEFAULT 60
-/* base64(<IPv6><port><48bit timestamp>) + NUL */
-#define LOGIN_MAX_SESSION_ID_LEN 33
struct master_login_client {
struct master_login_connection *conn;
int fd;
struct master_auth_request auth_req;
- char session_id[LOGIN_MAX_SESSION_ID_LEN];
+ char *session_id;
unsigned char data[FLEXIBLE_ARRAY_MEMBER];
};
More information about the dovecot-cvs
mailing list