summaryrefslogtreecommitdiff
path: root/librpc/ndr
diff options
context:
space:
mode:
authorGünther Deschner <gd@samba.org>2009-08-14 00:48:58 +0200
committerGünther Deschner <gd@samba.org>2009-08-28 10:05:00 +0200
commit4e7edc7906aa0ec260ad2e1faf5e414b968a6310 (patch)
treeaf621ca5fc01faf4501e0eba5b50d90ba9905064 /librpc/ndr
parentd4d2b42a921af11dc34ce48b8f4668171e388f95 (diff)
downloadsamba-4e7edc7906aa0ec260ad2e1faf5e414b968a6310.tar.gz
samba-4e7edc7906aa0ec260ad2e1faf5e414b968a6310.tar.bz2
samba-4e7edc7906aa0ec260ad2e1faf5e414b968a6310.zip
ntlmssp: add string helper functions to handle OEM and UNICODE charset.
Guenther
Diffstat (limited to 'librpc/ndr')
-rw-r--r--librpc/ndr/ndr_ntlmssp.c26
-rw-r--r--librpc/ndr/ndr_ntlmssp.h4
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);
+