diff options
author | Günther Deschner <gd@samba.org> | 2009-08-14 00:48:58 +0200 |
---|---|---|
committer | Günther Deschner <gd@samba.org> | 2009-08-28 10:05:00 +0200 |
commit | 4e7edc7906aa0ec260ad2e1faf5e414b968a6310 (patch) | |
tree | af621ca5fc01faf4501e0eba5b50d90ba9905064 | |
parent | d4d2b42a921af11dc34ce48b8f4668171e388f95 (diff) | |
download | samba-4e7edc7906aa0ec260ad2e1faf5e414b968a6310.tar.gz samba-4e7edc7906aa0ec260ad2e1faf5e414b968a6310.tar.bz2 samba-4e7edc7906aa0ec260ad2e1faf5e414b968a6310.zip |
ntlmssp: add string helper functions to handle OEM and UNICODE charset.
Guenther
-rw-r--r-- | librpc/ndr/ndr_ntlmssp.c | 26 | ||||
-rw-r--r-- | librpc/ndr/ndr_ntlmssp.h | 4 |
2 files changed, 30 insertions, 0 deletions
diff --git a/librpc/ndr/ndr_ntlmssp.c b/librpc/ndr/ndr_ntlmssp.c index db9a717c23..115c7abd02 100644 --- a/librpc/ndr/ndr_ntlmssp.c +++ b/librpc/ndr/ndr_ntlmssp.c @@ -20,4 +20,30 @@ */ #include "includes.h" +#include "../librpc/ndr/ndr_ntlmssp.h" +_PUBLIC_ size_t ndr_ntlmssp_string_length(uint32_t negotiate_flags, const char *s) +{ + if (!s) { + return 0; + } + + if (negotiate_flags & NTLMSSP_NEGOTIATE_UNICODE) { + return strlen(s) * 2; + } + + return strlen(s); +} + +_PUBLIC_ uint32_t ndr_ntlmssp_negotiated_string_flags(uint32_t negotiate_flags) +{ + uint32_t flags = LIBNDR_FLAG_STR_NOTERM | + LIBNDR_FLAG_STR_CHARLEN | + LIBNDR_FLAG_REMAINING; + + if (!(negotiate_flags & NTLMSSP_NEGOTIATE_UNICODE)) { + flags |= LIBNDR_FLAG_STR_ASCII; + } + + return flags; +} diff --git a/librpc/ndr/ndr_ntlmssp.h b/librpc/ndr/ndr_ntlmssp.h index 753fa50256..ef00a2e347 100644 --- a/librpc/ndr/ndr_ntlmssp.h +++ b/librpc/ndr/ndr_ntlmssp.h @@ -18,3 +18,7 @@ You should have received a copy of the GNU General Public License along with this program. If not, see <http://www.gnu.org/licenses/>. */ + +_PUBLIC_ size_t ndr_ntlmssp_string_length(uint32_t negotiate_flags, const char *s); +_PUBLIC_ uint32_t ndr_ntlmssp_negotiated_string_flags(uint32_t negotiate_flags); + |