summaryrefslogtreecommitdiffstats
path: root/src/ntlm.c
diff options
context:
space:
mode:
authorSimo Sorce <simo@redhat.com>2013-07-28 13:15:47 -0400
committerSimo Sorce <simo@redhat.com>2013-07-28 13:17:51 -0400
commite571bfd6742fe9c0dfd865927adddd619066dffb (patch)
tree2a57e70459a88745100a09eb8ccf0285c3c34406 /src/ntlm.c
parent52ef270f473d70d4a61f181e5a8000c11fe7ea0b (diff)
downloadgss-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.c20
1 files changed, 10 insertions, 10 deletions
diff --git a/src/ntlm.c b/src/ntlm.c
index 9041a71..7c7ab6e 100644
--- a/src/ntlm.c
+++ b/src/ntlm.c
@@ -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;