[PATCH 3/6] Enable a padding when sending password, to avoid leakage of password length.
Nikos Mavrogiannopoulos
nmav at gnutls.org
Sat Nov 23 12:58:17 EST 2013
Signed-off-by: Nikos Mavrogiannopoulos <nmav at gnutls.org>
---
http.c | 10 +++++++++-
1 file changed, 9 insertions(+), 1 deletion(-)
diff --git a/http.c b/http.c
index 5adacaa..c713f27 100644
--- a/http.c
+++ b/http.c
@@ -865,6 +865,7 @@ static int do_https_request(struct openconnect_info *vpninfo, const char *method
struct oc_text_buf *buf;
int result, buflen;
int rq_retry;
+ int rlen, pad;
redirected:
vpninfo->redirect_type = REDIR_TYPE_NONE;
@@ -888,8 +889,15 @@ static int do_https_request(struct openconnect_info *vpninfo, const char *method
add_common_headers(vpninfo, buf);
if (request_body_type) {
+ rlen = strlen(request_body);
+
+ /* force body length to be a multiple of 64, to avoid leaking
+ * password length. */
+ pad = 64*(1+rlen/64) - rlen;
+ buf_append(buf, "X-Pad: %0*d\r\n", pad, 0);
+
buf_append(buf, "Content-Type: %s\r\n", request_body_type);
- buf_append(buf, "Content-Length: %zd\r\n", strlen(request_body));
+ buf_append(buf, "Content-Length: %zd\r\n", rlen);
}
buf_append(buf, "\r\n");
More information about the openconnect-devel
mailing list