diff options
author | Günther Deschner <gd@samba.org> | 2014-02-21 18:56:04 +0100 |
---|---|---|
committer | Günther Deschner <gd@samba.org> | 2014-03-12 10:13:20 +0100 |
commit | 1270e35ba70a4e4881512d375c767023512f67bd (patch) | |
tree | e64e3bdf1912577e3d8c253d4219d27be81cf090 /source3/utils/net_ads.c | |
parent | 35a1ed22f65473fabb2f4846f6d2b50da1847f6a (diff) | |
download | samba-1270e35ba70a4e4881512d375c767023512f67bd.tar.gz |
s3-kerberos: return a full PAC in kerberos_return_pac().
Guenther
Signed-off-by: Günther Deschner <gd@samba.org>
Reviewed-by: Andreas Schneider <asn@samba.org>
Diffstat (limited to 'source3/utils/net_ads.c')
-rw-r--r-- | source3/utils/net_ads.c | 17 |
1 files changed, 16 insertions, 1 deletions
diff --git a/source3/utils/net_ads.c b/source3/utils/net_ads.c index c53c8c6ab6b..19da6da8108 100644 --- a/source3/utils/net_ads.c +++ b/source3/utils/net_ads.c @@ -2600,6 +2600,7 @@ static int net_ads_kerberos_renew(struct net_context *c, int argc, const char ** static int net_ads_kerberos_pac(struct net_context *c, int argc, const char **argv) { struct PAC_LOGON_INFO *info = NULL; + struct PAC_DATA *pac_data = NULL; TALLOC_CTX *mem_ctx = NULL; NTSTATUS status; int ret = -1; @@ -2658,13 +2659,27 @@ static int net_ads_kerberos_pac(struct net_context *c, int argc, const char **ar 2592000, /* one month */ impersonate_princ_s, local_service, - &info); + &pac_data); if (!NT_STATUS_IS_OK(status)) { d_printf(_("failed to query kerberos PAC: %s\n"), nt_errstr(status)); goto out; } + for (i=0; i < pac_data->num_buffers; i++) { + + if (pac_data->buffers[i].type != PAC_TYPE_LOGON_INFO) { + continue; + } + + info = pac_data->buffers[i].info->logon_info.info; + if (!info) { + goto out; + } + + break; + } + if (info) { const char *s; s = NDR_PRINT_STRUCT_STRING(mem_ctx, PAC_LOGON_INFO, info); |