version 1.352, 2016/09/12 01:22:38 |
version 1.353, 2016/09/19 07:52:42 |
|
|
char *new_data; |
char *new_data; |
int screen_number; |
int screen_number; |
const char *cp; |
const char *cp; |
u_int32_t rnd = 0; |
|
|
|
if (x11_saved_display == NULL) |
if (x11_saved_display == NULL) |
x11_saved_display = xstrdup(disp); |
x11_saved_display = xstrdup(disp); |
|
|
if (x11_saved_proto == NULL) { |
if (x11_saved_proto == NULL) { |
/* Save protocol name. */ |
/* Save protocol name. */ |
x11_saved_proto = xstrdup(proto); |
x11_saved_proto = xstrdup(proto); |
/* |
|
* Extract real authentication data and generate fake data |
/* Extract real authentication data. */ |
* of the same length. |
|
*/ |
|
x11_saved_data = xmalloc(data_len); |
x11_saved_data = xmalloc(data_len); |
x11_fake_data = xmalloc(data_len); |
|
for (i = 0; i < data_len; i++) { |
for (i = 0; i < data_len; i++) { |
if (sscanf(data + 2 * i, "%2x", &value) != 1) |
if (sscanf(data + 2 * i, "%2x", &value) != 1) |
fatal("x11_request_forwarding: bad " |
fatal("x11_request_forwarding: bad " |
"authentication data: %.100s", data); |
"authentication data: %.100s", data); |
if (i % 4 == 0) |
|
rnd = arc4random(); |
|
x11_saved_data[i] = value; |
x11_saved_data[i] = value; |
x11_fake_data[i] = rnd & 0xff; |
|
rnd >>= 8; |
|
} |
} |
x11_saved_data_len = data_len; |
x11_saved_data_len = data_len; |
|
|
|
/* Generate fake data of the same length. */ |
|
x11_fake_data = xmalloc(data_len); |
|
arc4random_buf(x11_fake_data, data_len); |
x11_fake_data_len = data_len; |
x11_fake_data_len = data_len; |
} |
} |
|
|