summaryrefslogtreecommitdiff
path: root/lib/krb5.c
diff options
context:
space:
mode:
authorStefan Eissing <stefan@eissing.org>2023-01-03 13:13:37 +0100
committerDaniel Stenberg <daniel@haxx.se>2023-01-03 17:33:29 +0100
commit6a8d7ef9818d5f5c9bbd9bcf4ce09feaa04a1556 (patch)
tree91ef71e554b532ce00c38d27f1c31a9c8333d933 /lib/krb5.c
parent436d63fbb18db9c91e816b27a3b9316cd7310471 (diff)
downloadcurl-6a8d7ef9818d5f5c9bbd9bcf4ce09feaa04a1556.tar.gz
cf-socket: keep sockaddr local in the socket filters
- copy `struct Curl_addrinfo` on filter setup into context - remove `struct Curl_addrinfoi *` with `struct Curl_sockaddr_ex *` in connectdata that is set and NULLed by the socket filter - this means we have no reference to the resolver info in connectdata or its filters - trigger the CF_CTRL_CONN_INFO_UPDATE event when the complete filter chain reaches connected status - update easy handle connection information on CF_CTRL_DATA_SETUP event. Closes #10213
Diffstat (limited to 'lib/krb5.c')
-rw-r--r--lib/krb5.c7
1 files changed, 4 insertions, 3 deletions
diff --git a/lib/krb5.c b/lib/krb5.c
index c65235c5b..82ab844b8 100644
--- a/lib/krb5.c
+++ b/lib/krb5.c
@@ -46,6 +46,7 @@
#endif
#include "urldata.h"
+#include "cf-socket.h"
#include "curl_base64.h"
#include "ftp.h"
#include "curl_gssapi.h"
@@ -207,8 +208,8 @@ krb5_auth(void *app_data, struct Curl_easy *data, struct connectdata *conn)
gss_ctx_id_t *context = app_data;
struct gss_channel_bindings_struct chan;
size_t base64_sz = 0;
- struct sockaddr_in **remote_addr =
- (struct sockaddr_in **)&conn->ip_addr->ai_addr;
+ struct sockaddr_in *remote_addr =
+ (struct sockaddr_in *)&conn->remote_addr->sa_addr;
char *stringp;
if(getsockname(conn->sock[FIRSTSOCKET],
@@ -220,7 +221,7 @@ krb5_auth(void *app_data, struct Curl_easy *data, struct connectdata *conn)
chan.initiator_address.value = &conn->local_addr.sin_addr.s_addr;
chan.acceptor_addrtype = GSS_C_AF_INET;
chan.acceptor_address.length = l - 4;
- chan.acceptor_address.value = &(*remote_addr)->sin_addr.s_addr;
+ chan.acceptor_address.value = &remote_addr->sin_addr.s_addr;
chan.application_data.length = 0;
chan.application_data.value = NULL;