diff options
author | Simo Sorce <simo@redhat.com> | 2013-07-28 13:15:47 -0400 |
---|---|---|
committer | Simo Sorce <simo@redhat.com> | 2013-07-28 13:17:51 -0400 |
commit | e571bfd6742fe9c0dfd865927adddd619066dffb (patch) | |
tree | 2a57e70459a88745100a09eb8ccf0285c3c34406 /src/ntlm.c | |
parent | 52ef270f473d70d4a61f181e5a8000c11fe7ea0b (diff) | |
download | gss-ntlmssp-e571bfd6742fe9c0dfd865927adddd619066dffb.tar.gz gss-ntlmssp-e571bfd6742fe9c0dfd865927adddd619066dffb.tar.xz gss-ntlmssp-e571bfd6742fe9c0dfd865927adddd619066dffb.zip |
Fix target_info length calculation
The size of the AV filed itself was missing for each field resulting in a
shorter than needed buffer size.
Diffstat (limited to 'src/ntlm.c')
-rw-r--r-- | src/ntlm.c | 20 |
1 files changed, 10 insertions, 10 deletions
@@ -602,39 +602,39 @@ int ntlm_encode_target_info(struct ntlm_ctx *ctx, char *nb_computer_name, if (nb_computer_name) { nb_computer_name_len = strlen(nb_computer_name); - max_size += nb_computer_name_len * 2; + max_size += 4 + nb_computer_name_len * 2; } if (nb_domain_name) { nb_domain_name_len = strlen(nb_domain_name); - max_size += nb_domain_name_len * 2; + max_size += 4 + nb_domain_name_len * 2; } if (dns_computer_name) { dns_computer_name_len = strlen(dns_computer_name); - max_size += dns_computer_name_len * 2; + max_size += 4 + dns_computer_name_len * 2; } if (dns_domain_name) { dns_domain_name_len = strlen(dns_domain_name); - max_size += dns_domain_name_len * 2; + max_size += 4 + dns_domain_name_len * 2; } if (dns_tree_name) { dns_tree_name_len = strlen(dns_tree_name); - max_size += dns_tree_name_len * 2; + max_size += 4 + dns_tree_name_len * 2; } if (av_flags) { - max_size += 8; + max_size += 4 + 4; } if (av_timestamp) { - max_size += 12; + max_size += 4 + 8; } if (av_single_host) { - max_size += av_single_host->length; + max_size += 4 + av_single_host->length; } if (av_target_name) { av_target_name_len = strlen(av_target_name); - max_size += av_target_name_len * 2; + max_size += 4 + av_target_name_len * 2; } if (av_cb) { - max_size += av_cb->length; + max_size += 4 + av_cb->length; } data_offs = 0; |