diff options
author | Simo Sorce <ssorce@redhat.com> | 2007-09-12 11:51:16 -0400 |
---|---|---|
committer | Simo Sorce <ssorce@redhat.com> | 2007-09-12 11:51:16 -0400 |
commit | 5898ae527aab2358780abf56fbd33542336af54e (patch) | |
tree | 831a109935029cbc57c372cddf5e032af2a9f897 /ipa-server/ipa-kpasswd | |
parent | 182fbe30945a8de005f00b460968dca7973342fb (diff) | |
download | freeipa-5898ae527aab2358780abf56fbd33542336af54e.tar.gz freeipa-5898ae527aab2358780abf56fbd33542336af54e.tar.xz freeipa-5898ae527aab2358780abf56fbd33542336af54e.zip |
In the TCP case there is an extra (redundant) lenght
field before the packet data, address the problem.
Diffstat (limited to 'ipa-server/ipa-kpasswd')
-rw-r--r-- | ipa-server/ipa-kpasswd/ipa_kpasswd.c | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/ipa-server/ipa-kpasswd/ipa_kpasswd.c b/ipa-server/ipa-kpasswd/ipa_kpasswd.c index c59db44b..325f6aa0 100644 --- a/ipa-server/ipa-kpasswd/ipa_kpasswd.c +++ b/ipa-server/ipa-kpasswd/ipa_kpasswd.c @@ -842,7 +842,15 @@ pid_t handle_conn(int fd, int type) #endif /* children */ - handle_krb_packets(request, reqlen, &from, &reply, &replen); + + /* TCP packets prepend the lenght as a 32bit network order field, + * this information seem to be just redundant, so let's simply + * skip it */ + if (type == KPASSWD_TCP) { + handle_krb_packets(request+4, reqlen-4, &from, &reply, &replen); + } else { + handle_krb_packets(request, reqlen, &from, &reply, &replen); + } if (replen) { /* we have something to reply */ if (type == KPASSWD_TCP) { |