GSS_C_NT_HOSTBASED_SERVICE, &server);
}
- gss_release_buffer(&gss_status, &service); /* clear allocated memory */
+ Curl_safefree(service.value);
if(check_gss_err(data, gss_major_status,
gss_minor_status, "gss_import_name()")) {
&gss_ret_flags);
if(gss_token != GSS_C_NO_BUFFER)
- gss_release_buffer(&gss_status, &gss_recv_token);
+ Curl_safefree(gss_recv_token.value);
if(check_gss_err(data, gss_major_status,
gss_minor_status, "gss_init_sec_context") ||
/* the size needs to fit in a 16 bit field */
us_length = ntohs(us_length);
gss_recv_token.length = us_length;
- gss_recv_token.value = malloc(us_length);
+ gss_recv_token.value = malloc(gss_recv_token.length);
if(!gss_recv_token.value) {
failf(data,
"Could not allocate memory for GSS-API authentication "
if(result || (actualread != us_length)) {
failf(data, "Failed to receive GSS-API authentication token.");
gss_release_name(&gss_status, &server);
- gss_release_buffer(&gss_status, &gss_recv_token);
+ Curl_safefree(gss_recv_token.value);
Curl_gss_delete_sec_context(&gss_status, &gss_context, NULL);
return CURLE_COULDNT_CONNECT;
}
}
else {
gss_send_token.length = 1;
- gss_send_token.value = Curl_memdup(&gss_enc, 1);
+ gss_send_token.value = Curl_memdup(&gss_enc, gss_send_token.length);
if(!gss_send_token.value) {
Curl_gss_delete_sec_context(&gss_status, &gss_context, NULL);
return CURLE_OUT_OF_MEMORY;
&gss_conf_state, &gss_w_token);
if(check_gss_err(data, gss_major_status, gss_minor_status, "gss_wrap")) {
- gss_release_buffer(&gss_status, &gss_send_token);
+ Curl_safefree(gss_send_token.value);
gss_release_buffer(&gss_status, &gss_w_token);
Curl_gss_delete_sec_context(&gss_status, &gss_context, NULL);
failf(data, "Failed to wrap GSS-API encryption value into token.");
return CURLE_COULDNT_CONNECT;
}
- gss_release_buffer(&gss_status, &gss_send_token);
+ Curl_safefree(gss_send_token.value);
us_length = htons((unsigned short)gss_w_token.length);
memcpy(socksreq + 2, &us_length, sizeof(short));
if(result || (actualread != us_length)) {
failf(data, "Failed to receive GSS-API encryption type.");
- gss_release_buffer(&gss_status, &gss_recv_token);
+ Curl_safefree(gss_recv_token.value);
Curl_gss_delete_sec_context(&gss_status, &gss_context, NULL);
return CURLE_COULDNT_CONNECT;
}
0, GSS_C_QOP_DEFAULT);
if(check_gss_err(data, gss_major_status, gss_minor_status, "gss_unwrap")) {
- gss_release_buffer(&gss_status, &gss_recv_token);
+ Curl_safefree(gss_recv_token.value);
gss_release_buffer(&gss_status, &gss_w_token);
Curl_gss_delete_sec_context(&gss_status, &gss_context, NULL);
failf(data, "Failed to unwrap GSS-API encryption value into token.");
return CURLE_COULDNT_CONNECT;
}
- gss_release_buffer(&gss_status, &gss_recv_token);
+ Curl_safefree(gss_recv_token.value);
if(gss_w_token.length != 1) {
failf(data, "Invalid GSS-API encryption response length (%zu).",
if(gss_recv_token.length != 1) {
failf(data, "Invalid GSS-API encryption response length (%zu).",
gss_recv_token.length);
- gss_release_buffer(&gss_status, &gss_recv_token);
+ Curl_safefree(gss_recv_token.value);
Curl_gss_delete_sec_context(&gss_status, &gss_context, NULL);
return CURLE_COULDNT_CONNECT;
}
memcpy(socksreq, gss_recv_token.value, gss_recv_token.length);
- gss_release_buffer(&gss_status, &gss_recv_token);
+ Curl_safefree(gss_recv_token.value);
}
(void)curlx_nonblock(sock, TRUE);