|
Lines 26-31
create dns_resolver * * /usr/local/sbin/cifs.upcall %k
Link Here
|
| 26 |
|
26 |
|
| 27 |
#include "includes.h" |
27 |
#include "includes.h" |
| 28 |
#include <keyutils.h> |
28 |
#include <keyutils.h> |
|
|
29 |
#include <netdb.h> |
| 30 |
#include <resolv.h> |
| 31 |
|
| 32 |
#define MAX_DNS_NAMELEN (15*(MAXHOSTNAMELEN + 1)+1) |
| 29 |
|
33 |
|
| 30 |
#include "cifs_spnego.h" |
34 |
#include "cifs_spnego.h" |
| 31 |
|
35 |
|
|
Lines 111-119
decode_key_description(const char *desc, int *ver, secType_t * sec,
Link Here
|
| 111 |
len = pos - tkn; |
115 |
len = pos - tkn; |
| 112 |
} |
116 |
} |
| 113 |
len -= 4; |
117 |
len -= 4; |
|
|
118 |
// Get canonical name of host |
| 119 |
struct addrinfo * info; |
| 120 |
if(len > MAX_DNS_NAMELEN) |
| 121 |
{ |
| 122 |
syslog(LOG_WARNING, "Hostname is too long"); |
| 123 |
return 1; |
| 124 |
} |
| 125 |
char host[MAX_DNS_NAMELEN+1]; |
| 126 |
strlcpy(host, tkn + 5, len); |
| 127 |
int ret = getaddrinfo(host, 0, 0, &info); |
| 128 |
if(ret) |
| 129 |
{ |
| 130 |
syslog(LOG_WARNING, "getaddrinfo: %s", |
| 131 |
gai_strerror(ret)); |
| 132 |
return 1; |
| 133 |
} |
| 134 |
ret = getnameinfo(info->ai_addr, info->ai_addrlen, |
| 135 |
host, sizeof(host), 0, 0, 0); |
| 136 |
if(ret) |
| 137 |
{ |
| 138 |
syslog(LOG_WARNING, "getnameinfo: %s", |
| 139 |
gai_strerror(ret)); |
| 140 |
freeaddrinfo(info); |
| 141 |
return 1; |
| 142 |
} |
| 143 |
freeaddrinfo(info); |
| 144 |
len = strlen(host) + 1; |
| 145 |
|
| 114 |
SAFE_FREE(*hostname); |
146 |
SAFE_FREE(*hostname); |
| 115 |
*hostname = SMB_XMALLOC_ARRAY(char, len); |
147 |
*hostname = SMB_XMALLOC_ARRAY(char, len); |
| 116 |
strlcpy(*hostname, tkn + 5, len); |
148 |
strlcpy(*hostname, host, len); |
| 117 |
retval |= DKD_HAVE_HOSTNAME; |
149 |
retval |= DKD_HAVE_HOSTNAME; |
| 118 |
} else if (strncmp(tkn, "ipv4=", 5) == 0) { |
150 |
} else if (strncmp(tkn, "ipv4=", 5) == 0) { |
| 119 |
/* BB: do we need it if we have hostname already? */ |
151 |
/* BB: do we need it if we have hostname already? */ |