summaryrefslogtreecommitdiff
path: root/lib/ext/pre_shared_key.c
diff options
context:
space:
mode:
Diffstat (limited to 'lib/ext/pre_shared_key.c')
-rw-r--r--lib/ext/pre_shared_key.c14
1 files changed, 3 insertions, 11 deletions
diff --git a/lib/ext/pre_shared_key.c b/lib/ext/pre_shared_key.c
index 8a39cda153..fef67d341c 100644
--- a/lib/ext/pre_shared_key.c
+++ b/lib/ext/pre_shared_key.c
@@ -394,8 +394,7 @@ client_send_params(gnutls_session_t session,
info = _gnutls_get_auth_info(session, GNUTLS_CRD_PSK);
assert(info != NULL);
- memcpy(info->username, username.data, username.size);
- info->username[username.size] = 0;
+ _gnutls_copy_psk_username(info, &username);
if ((ret = _gnutls_buffer_append_data_prefix(extdata, 16,
username.data,
@@ -609,17 +608,11 @@ static int server_recv_params(gnutls_session_t session,
} else if (pskcred &&
psk.ob_ticket_age == 0 &&
psk.identity.size > 0 && psk.identity.size <= MAX_USERNAME_SIZE) {
- /* _gnutls_psk_pwd_find_entry() expects 0-terminated identities */
- char identity_str[MAX_USERNAME_SIZE + 1];
-
prf = pskcred->binder_algo;
- memcpy(identity_str, psk.identity.data, psk.identity.size);
- identity_str[psk.identity.size] = 0;
-
/* this fails only on configuration errors; as such we always
* return its error code in that case */
- ret = _gnutls_psk_pwd_find_entry(session, identity_str, &key);
+ ret = _gnutls_psk_pwd_find_entry(session, (char *) psk.identity.data, psk.identity.size, &key);
if (ret < 0)
return gnutls_assert_val(ret);
@@ -684,8 +677,7 @@ static int server_recv_params(gnutls_session_t session,
info = _gnutls_get_auth_info(session, GNUTLS_CRD_PSK);
assert(info != NULL);
- memcpy(info->username, psk.identity.data, psk.identity.size);
- info->username[psk.identity.size] = 0;
+ _gnutls_copy_psk_username(info, &psk.identity);
_gnutls_handshake_log("EXT[%p]: selected PSK identity: %s (%d)\n", session, info->username, psk_index);
} else {
if (session->internals.hsk_flags & HSK_EARLY_DATA_ACCEPTED) {