int PutUniCode(char *dst,char *src);
char *skip_unicode_string(char *buf,int n);
-char *unistrn2(uint16 *src, int len);
-char *unistr2(uint16 *src);
+char *unistrn2(char *src, int len);
+char *unistr2(char *src);
char *unistr2_to_str(UNISTR2 *str);
uint32 buffer2_to_uint32(BUFFER2 *str);
char *buffer2_to_str(BUFFER2 *str);
Hack alert: uses fixed buffer(s) and only handles ascii strings
********************************************************************/
-char *unistrn2(uint16 *src, int len)
+char *unistrn2(char *src, int len)
{
static char lbufs[8][MAXUNI];
static int nexti;
nexti = (nexti+1)%8;
- for (p = lbuf; *src && p-lbuf < MAXUNI-2 && len > 0; len--, src++)
+ for (p = lbuf; *src && p-lbuf < MAXUNI-2 && len > 0; len--, src += 2)
{
- *p++ = (*src & 0xff);
+ *p++ = SVAL(src, 0) & 0xFF;
}
*p = 0;
Hack alert: uses fixed buffer(s) and only handles ascii strings
********************************************************************/
-char *unistr2(uint16 *src)
+char *unistr2(char *src)
{
char *lbuf = lbufs[nexti];
char *p;
nexti = (nexti+1)%8;
- for (p = lbuf; *src && p-lbuf < MAXUNI-2; p++, src++)
+ for (p = lbuf; *src && p-lbuf < MAXUNI-2; p++, src += 2)
{
- *p = (*src & 0xff);
+ *p = SVAL(src, 0) & 0xFF;
}
*p = 0;
for (p = lbuf; *buf && p-lbuf < MAXUNI-2; p++, buf += 2)
{
- *p = *buf;
+ *p = SVAL(buf, 0) & 0xFF;
}
*p = 0;
return lbuf;
if (IS_BITS_SET_ALL(p->ntlmssp_chal.neg_flags, NTLMSSP_NEGOTIATE_UNICODE))
{
- fstrcpy(p->user_name, unistrn2((uint16*)p->ntlmssp_resp.user , p->ntlmssp_resp.hdr_usr .str_str_len/2));
- fstrcpy(p->domain , unistrn2((uint16*)p->ntlmssp_resp.domain, p->ntlmssp_resp.hdr_domain.str_str_len/2));
- fstrcpy(p->wks , unistrn2((uint16*)p->ntlmssp_resp.wks , p->ntlmssp_resp.hdr_wks .str_str_len/2));
+ fstrcpy(p->user_name, unistrn2(p->ntlmssp_resp.user , p->ntlmssp_resp.hdr_usr .str_str_len/2));
+ fstrcpy(p->domain , unistrn2(p->ntlmssp_resp.domain, p->ntlmssp_resp.hdr_domain.str_str_len/2));
+ fstrcpy(p->wks , unistrn2(p->ntlmssp_resp.wks , p->ntlmssp_resp.hdr_wks .str_str_len/2));
}
else
{
int uni_pw_len = new_pw_len;
char *pw;
new_pw_len /= 2;
- pw = unistrn2((uint16*)(&lmdata[512-uni_pw_len]), new_pw_len);
+ pw = unistrn2(&lmdata[512-uni_pw_len], new_pw_len);
memcpy(new_passwd, pw, new_pw_len+1);
}
else