Refactor of writing utf16 strings to packets.
This remove the use of deprecated rdp_out_unistr() and some minor cleanups.
This commit is contained in:
parent
e35a76bce2
commit
e195953496
37
cssp.c
37
cssp.c
@ -225,10 +225,11 @@ cssp_encode_tspasswordcreds(char *username, char *password, char *domain)
|
|||||||
memset(&tmp, 0, sizeof(tmp));
|
memset(&tmp, 0, sizeof(tmp));
|
||||||
memset(&message, 0, sizeof(message));
|
memset(&message, 0, sizeof(message));
|
||||||
|
|
||||||
|
s_realloc(&tmp, 512 * 4);
|
||||||
|
|
||||||
// domainName [0]
|
// domainName [0]
|
||||||
s_realloc(&tmp, 4 + strlen(domain) * sizeof(uint16));
|
|
||||||
s_reset(&tmp);
|
s_reset(&tmp);
|
||||||
rdp_out_unistr(&tmp, domain, strlen(domain) * sizeof(uint16));
|
out_utf16s(&tmp, domain);
|
||||||
s_mark_end(&tmp);
|
s_mark_end(&tmp);
|
||||||
h2 = ber_wrap_hdr_data(BER_TAG_OCTET_STRING, &tmp);
|
h2 = ber_wrap_hdr_data(BER_TAG_OCTET_STRING, &tmp);
|
||||||
h1 = ber_wrap_hdr_data(BER_TAG_CTXT_SPECIFIC | BER_TAG_CONSTRUCTED | 0, h2);
|
h1 = ber_wrap_hdr_data(BER_TAG_CTXT_SPECIFIC | BER_TAG_CONSTRUCTED | 0, h2);
|
||||||
@ -239,9 +240,8 @@ cssp_encode_tspasswordcreds(char *username, char *password, char *domain)
|
|||||||
s_free(h1);
|
s_free(h1);
|
||||||
|
|
||||||
// userName [1]
|
// userName [1]
|
||||||
s_realloc(&tmp, 4 + strlen(username) * sizeof(uint16));
|
|
||||||
s_reset(&tmp);
|
s_reset(&tmp);
|
||||||
rdp_out_unistr(&tmp, username, strlen(username) * sizeof(uint16));
|
out_utf16s(&tmp, username);
|
||||||
s_mark_end(&tmp);
|
s_mark_end(&tmp);
|
||||||
|
|
||||||
h2 = ber_wrap_hdr_data(BER_TAG_OCTET_STRING, &tmp);
|
h2 = ber_wrap_hdr_data(BER_TAG_OCTET_STRING, &tmp);
|
||||||
@ -253,9 +253,8 @@ cssp_encode_tspasswordcreds(char *username, char *password, char *domain)
|
|||||||
s_free(h1);
|
s_free(h1);
|
||||||
|
|
||||||
// password [2]
|
// password [2]
|
||||||
s_realloc(&tmp, 4 + strlen(password) * sizeof(uint16));
|
|
||||||
s_reset(&tmp);
|
s_reset(&tmp);
|
||||||
rdp_out_unistr(&tmp, password, strlen(password) * sizeof(uint16));
|
out_utf16s(&tmp, password);
|
||||||
s_mark_end(&tmp);
|
s_mark_end(&tmp);
|
||||||
h2 = ber_wrap_hdr_data(BER_TAG_OCTET_STRING, &tmp);
|
h2 = ber_wrap_hdr_data(BER_TAG_OCTET_STRING, &tmp);
|
||||||
h1 = ber_wrap_hdr_data(BER_TAG_CTXT_SPECIFIC | BER_TAG_CONSTRUCTED | 2, h2);
|
h1 = ber_wrap_hdr_data(BER_TAG_CTXT_SPECIFIC | BER_TAG_CONSTRUCTED | 2, h2);
|
||||||
@ -287,8 +286,9 @@ cssp_encode_tscspdatadetail(unsigned char keyspec, char *card, char *reader, cha
|
|||||||
struct stream tmp = { 0 };
|
struct stream tmp = { 0 };
|
||||||
struct stream message = { 0 };
|
struct stream message = { 0 };
|
||||||
|
|
||||||
|
s_realloc(&tmp, 512 * 4);
|
||||||
|
|
||||||
// keySpec [0]
|
// keySpec [0]
|
||||||
s_realloc(&tmp, sizeof(uint8));
|
|
||||||
s_reset(&tmp);
|
s_reset(&tmp);
|
||||||
out_uint8(&tmp, keyspec);
|
out_uint8(&tmp, keyspec);
|
||||||
s_mark_end(&tmp);
|
s_mark_end(&tmp);
|
||||||
@ -303,9 +303,8 @@ cssp_encode_tscspdatadetail(unsigned char keyspec, char *card, char *reader, cha
|
|||||||
// cardName [1]
|
// cardName [1]
|
||||||
if (card)
|
if (card)
|
||||||
{
|
{
|
||||||
s_realloc(&tmp, 4 + strlen(card) * sizeof(uint16));
|
|
||||||
s_reset(&tmp);
|
s_reset(&tmp);
|
||||||
rdp_out_unistr(&tmp, card, strlen(card) * sizeof(uint16));
|
out_utf16s(&tmp, card);
|
||||||
s_mark_end(&tmp);
|
s_mark_end(&tmp);
|
||||||
h2 = ber_wrap_hdr_data(BER_TAG_OCTET_STRING, &tmp);
|
h2 = ber_wrap_hdr_data(BER_TAG_OCTET_STRING, &tmp);
|
||||||
h1 = ber_wrap_hdr_data(BER_TAG_CTXT_SPECIFIC | BER_TAG_CONSTRUCTED | 1, h2);
|
h1 = ber_wrap_hdr_data(BER_TAG_CTXT_SPECIFIC | BER_TAG_CONSTRUCTED | 1, h2);
|
||||||
@ -319,9 +318,8 @@ cssp_encode_tscspdatadetail(unsigned char keyspec, char *card, char *reader, cha
|
|||||||
// readerName [2]
|
// readerName [2]
|
||||||
if (reader)
|
if (reader)
|
||||||
{
|
{
|
||||||
s_realloc(&tmp, 4 + strlen(reader) * sizeof(uint16));
|
|
||||||
s_reset(&tmp);
|
s_reset(&tmp);
|
||||||
rdp_out_unistr(&tmp, reader, strlen(reader) * sizeof(uint16));
|
out_utf16s(&tmp, reader);
|
||||||
s_mark_end(&tmp);
|
s_mark_end(&tmp);
|
||||||
h2 = ber_wrap_hdr_data(BER_TAG_OCTET_STRING, &tmp);
|
h2 = ber_wrap_hdr_data(BER_TAG_OCTET_STRING, &tmp);
|
||||||
h1 = ber_wrap_hdr_data(BER_TAG_CTXT_SPECIFIC | BER_TAG_CONSTRUCTED | 2, h2);
|
h1 = ber_wrap_hdr_data(BER_TAG_CTXT_SPECIFIC | BER_TAG_CONSTRUCTED | 2, h2);
|
||||||
@ -335,9 +333,8 @@ cssp_encode_tscspdatadetail(unsigned char keyspec, char *card, char *reader, cha
|
|||||||
// containerName [3]
|
// containerName [3]
|
||||||
if (container)
|
if (container)
|
||||||
{
|
{
|
||||||
s_realloc(&tmp, 4 + strlen(container) * sizeof(uint16));
|
|
||||||
s_reset(&tmp);
|
s_reset(&tmp);
|
||||||
rdp_out_unistr(&tmp, container, strlen(container) * sizeof(uint16));
|
out_utf16s(&tmp, container);
|
||||||
s_mark_end(&tmp);
|
s_mark_end(&tmp);
|
||||||
h2 = ber_wrap_hdr_data(BER_TAG_OCTET_STRING, &tmp);
|
h2 = ber_wrap_hdr_data(BER_TAG_OCTET_STRING, &tmp);
|
||||||
h1 = ber_wrap_hdr_data(BER_TAG_CTXT_SPECIFIC | BER_TAG_CONSTRUCTED | 3, h2);
|
h1 = ber_wrap_hdr_data(BER_TAG_CTXT_SPECIFIC | BER_TAG_CONSTRUCTED | 3, h2);
|
||||||
@ -351,9 +348,8 @@ cssp_encode_tscspdatadetail(unsigned char keyspec, char *card, char *reader, cha
|
|||||||
// cspName [4]
|
// cspName [4]
|
||||||
if (csp)
|
if (csp)
|
||||||
{
|
{
|
||||||
s_realloc(&tmp, 4 + strlen(csp) * sizeof(uint16));
|
|
||||||
s_reset(&tmp);
|
s_reset(&tmp);
|
||||||
rdp_out_unistr(&tmp, csp, strlen(csp) * sizeof(uint16));
|
out_utf16s(&tmp, csp);
|
||||||
s_mark_end(&tmp);
|
s_mark_end(&tmp);
|
||||||
h2 = ber_wrap_hdr_data(BER_TAG_OCTET_STRING, &tmp);
|
h2 = ber_wrap_hdr_data(BER_TAG_OCTET_STRING, &tmp);
|
||||||
h1 = ber_wrap_hdr_data(BER_TAG_CTXT_SPECIFIC | BER_TAG_CONSTRUCTED | 4, h2);
|
h1 = ber_wrap_hdr_data(BER_TAG_CTXT_SPECIFIC | BER_TAG_CONSTRUCTED | 4, h2);
|
||||||
@ -382,10 +378,11 @@ cssp_encode_tssmartcardcreds(char *username, char *password, char *domain)
|
|||||||
struct stream tmp = { 0 };
|
struct stream tmp = { 0 };
|
||||||
struct stream message = { 0 };
|
struct stream message = { 0 };
|
||||||
|
|
||||||
|
s_realloc(&tmp, 512 * 4);
|
||||||
|
|
||||||
// pin [0]
|
// pin [0]
|
||||||
s_realloc(&tmp, strlen(password) * sizeof(uint16));
|
|
||||||
s_reset(&tmp);
|
s_reset(&tmp);
|
||||||
rdp_out_unistr(&tmp, password, strlen(password) * sizeof(uint16));
|
out_utf16s(&tmp, password);
|
||||||
s_mark_end(&tmp);
|
s_mark_end(&tmp);
|
||||||
h2 = ber_wrap_hdr_data(BER_TAG_OCTET_STRING, &tmp);
|
h2 = ber_wrap_hdr_data(BER_TAG_OCTET_STRING, &tmp);
|
||||||
h1 = ber_wrap_hdr_data(BER_TAG_CTXT_SPECIFIC | BER_TAG_CONSTRUCTED | 0, h2);
|
h1 = ber_wrap_hdr_data(BER_TAG_CTXT_SPECIFIC | BER_TAG_CONSTRUCTED | 0, h2);
|
||||||
@ -408,9 +405,8 @@ cssp_encode_tssmartcardcreds(char *username, char *password, char *domain)
|
|||||||
// userHint [2]
|
// userHint [2]
|
||||||
if (username && strlen(username))
|
if (username && strlen(username))
|
||||||
{
|
{
|
||||||
s_realloc(&tmp, strlen(username) * sizeof(uint16));
|
|
||||||
s_reset(&tmp);
|
s_reset(&tmp);
|
||||||
rdp_out_unistr(&tmp, username, strlen(username) * sizeof(uint16));
|
out_utf16s(&tmp, username);
|
||||||
s_mark_end(&tmp);
|
s_mark_end(&tmp);
|
||||||
h2 = ber_wrap_hdr_data(BER_TAG_OCTET_STRING, &tmp);
|
h2 = ber_wrap_hdr_data(BER_TAG_OCTET_STRING, &tmp);
|
||||||
h1 = ber_wrap_hdr_data(BER_TAG_CTXT_SPECIFIC | BER_TAG_CONSTRUCTED | 2, h2);
|
h1 = ber_wrap_hdr_data(BER_TAG_CTXT_SPECIFIC | BER_TAG_CONSTRUCTED | 2, h2);
|
||||||
@ -424,9 +420,8 @@ cssp_encode_tssmartcardcreds(char *username, char *password, char *domain)
|
|||||||
// domainHint [3]
|
// domainHint [3]
|
||||||
if (domain && strlen(domain))
|
if (domain && strlen(domain))
|
||||||
{
|
{
|
||||||
s_realloc(&tmp, strlen(domain) * sizeof(uint16));
|
|
||||||
s_reset(&tmp);
|
s_reset(&tmp);
|
||||||
rdp_out_unistr(&tmp, domain, strlen(domain) * sizeof(uint16));
|
out_utf16s(&tmp, domain);
|
||||||
s_mark_end(&tmp);
|
s_mark_end(&tmp);
|
||||||
h2 = ber_wrap_hdr_data(BER_TAG_OCTET_STRING, &tmp);
|
h2 = ber_wrap_hdr_data(BER_TAG_OCTET_STRING, &tmp);
|
||||||
h1 = ber_wrap_hdr_data(BER_TAG_CTXT_SPECIFIC | BER_TAG_CONSTRUCTED | 3, h2);
|
h1 = ber_wrap_hdr_data(BER_TAG_CTXT_SPECIFIC | BER_TAG_CONSTRUCTED | 3, h2);
|
||||||
|
Loading…
Reference in New Issue
Block a user