Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
T
tg
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Administrator
tg
Commits
862ae34b
Commit
862ae34b
authored
Nov 11, 2014
by
Vysheng
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Added partial support for action resend. Fix crush on incorrect encrypted message in lua mode
parent
31bd1749
Changes
5
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
44 additions
and
26 deletions
+44
-26
encrypted_scheme17.tl
encrypted_scheme17.tl
+1
-0
interface.c
interface.c
+3
-0
lua-tg.c
lua-tg.c
+2
-1
structures.c
structures.c
+33
-25
tgl-layout.h
tgl-layout.h
+5
-0
No files found.
encrypted_scheme17.tl
View file @
862ae34b
...
...
@@ -24,6 +24,7 @@ decryptedMessageActionScreenshotMessages#8ac1f475 random_ids:Vector<long> = Decr
decryptedMessageActionFlushHistory#6719e45c = DecryptedMessageAction;
decryptedMessageActionNotifyLayer#f3048883 layer:int = DecryptedMessageAction;
decryptedMessageActionResend#511110b0 start_seq_no:int end_seq_no:int = DecryptedMessageAction;
decryptedMessageActionTyping#ccb27641 action:SendMessageAction = DecryptedMessageAction;
...
...
interface.c
View file @
862ae34b
...
...
@@ -2612,6 +2612,9 @@ void print_service_message (struct in_ev *ev, struct tgl_message *M) {
case
tgl_message_action_flush_history
:
mprintf
(
ev
,
" cleared history
\n
"
);
break
;
case
tgl_message_action_resend
:
mprintf
(
ev
,
" resend query
\n
"
);
break
;
case
tgl_message_action_notify_layer
:
mprintf
(
ev
,
" updated layer to %d
\n
"
,
M
->
action
.
layer
);
break
;
...
...
lua-tg.c
View file @
862ae34b
...
...
@@ -287,7 +287,7 @@ void push_media (struct tgl_message_media *M) {
}
}
void
push_message
(
struct
tgl_message
*
M
)
{
void
push_message
(
struct
tgl_message
*
M
)
{
assert
(
M
);
my_lua_checkstack
(
luaState
,
10
);
lua_newtable
(
luaState
);
...
...
@@ -295,6 +295,7 @@ void push_message (struct tgl_message *M) {
static
char
s
[
30
];
snprintf
(
s
,
30
,
"%lld"
,
M
->
id
);
lua_add_string_field
(
"id"
,
s
);
if
(
!
(
M
->
flags
&
FLAG_CREATED
))
{
return
;
}
lua_add_num_field
(
"flags"
,
M
->
flags
);
if
(
tgl_get_peer_type
(
M
->
fwd_from_id
))
{
...
...
structures.c
View file @
862ae34b
...
...
@@ -1010,6 +1010,11 @@ void tglf_fetch_message_action_encrypted (struct tgl_state *TLS, struct tgl_mess
M
->
type
=
tgl_message_action_typing
;
M
->
typing
=
tglf_fetch_typing
();
break
;
case
CODE_decrypted_message_action_resend
:
M
->
type
=
tgl_message_action_resend
;
M
->
start_seq_no
=
fetch_int
();
M
->
end_seq_no
=
fetch_int
();
break
;
default:
vlogprintf
(
E_ERROR
,
"x = 0x%08x
\n
"
,
x
);
assert
(
0
);
...
...
@@ -1250,35 +1255,37 @@ void tglf_fetch_encrypted_message (struct tgl_state *TLS, struct tgl_message *M)
vlogprintf
(
E_DEBUG
-
2
,
"layer = %d, in = %d, out = %d
\n
"
,
layer
,
in_seq_no
,
out_seq_no
);
}
if
(
!
(
x
==
CODE_decrypted_message
||
x
==
CODE_decrypted_message_service
||
x
==
CODE_decrypted_message_l16
||
x
==
CODE_decrypted_message_service_l16
))
{
vlogprintf
(
E_ERROR
,
"x = 0x%08x
\n
"
,
x
);
assert
(
x
==
CODE_decrypted_message
||
x
==
CODE_decrypted_message_service
||
x
==
CODE_decrypted_message_l16
||
x
==
CODE_decrypted_message_service_l16
)
;
vlogprintf
(
E_ERROR
,
"
Incorrect message:
x = 0x%08x
\n
"
,
x
);
drop
=
1
;
}
//assert (id == fetch_long ());
long
long
new_id
=
fetch_long
();
if
(
P
&&
P
->
encr_chat
.
layer
>=
17
)
{
assert
(
new_id
==
id
);
}
if
(
x
==
CODE_decrypted_message
||
x
==
CODE_decrypted_message_service
)
{
if
(
x
==
CODE_decrypted_message
)
{
fetch_int
();
// ttl
if
(
!
drop
)
{
long
long
new_id
=
fetch_long
();
if
(
P
&&
P
->
encr_chat
.
layer
>=
17
)
{
assert
(
new_id
==
id
);
}
}
else
{
ll
=
prefetch_strlen
();
fetch_str
(
ll
);
// random_bytes
}
if
(
x
==
CODE_decrypted_message
||
x
==
CODE_decrypted_message_l16
)
{
l
=
prefetch_strlen
();
s
=
fetch_str
(
l
);
start
=
in_ptr
;
assert
(
skip_type_any
(
TYPE_TO_PARAM
(
decrypted_message_media
))
>=
0
);
end
=
in_ptr
;
}
else
{
start
=
in_ptr
;
if
(
skip_type_any
(
TYPE_TO_PARAM
(
decrypted_message_action
))
<
0
)
{
vlogprintf
(
E_ERROR
,
"Can not decrypt: Skipped %ld int out of %ld. Magic = 0x%08x
\n
"
,
(
long
)(
in_ptr
-
start
),
(
long
)(
in_end
-
start
),
*
start
);
drop
=
1
;
if
(
x
==
CODE_decrypted_message
||
x
==
CODE_decrypted_message_service
)
{
if
(
x
==
CODE_decrypted_message
)
{
fetch_int
();
// ttl
}
}
else
{
ll
=
prefetch_strlen
();
fetch_str
(
ll
);
// random_bytes
}
if
(
x
==
CODE_decrypted_message
||
x
==
CODE_decrypted_message_l16
)
{
l
=
prefetch_strlen
();
s
=
fetch_str
(
l
);
start
=
in_ptr
;
assert
(
skip_type_any
(
TYPE_TO_PARAM
(
decrypted_message_media
))
>=
0
);
end
=
in_ptr
;
}
else
{
start
=
in_ptr
;
if
(
skip_type_any
(
TYPE_TO_PARAM
(
decrypted_message_action
))
<
0
)
{
vlogprintf
(
E_ERROR
,
"Can not decrypt: Skipped %ld int out of %ld. Magic = 0x%08x
\n
"
,
(
long
)(
in_ptr
-
start
),
(
long
)(
in_end
-
start
),
*
start
);
drop
=
1
;
}
end
=
in_ptr
;
}
end
=
in_ptr
;
}
in_ptr
=
save_in_ptr
;
in_end
=
save_in_end
;
...
...
@@ -1661,6 +1668,7 @@ void tgls_free_message_action (struct tgl_state *TLS, struct tgl_message_action
case
tgl_message_action_delete_messages
:
case
tgl_message_action_screenshot_messages
:
case
tgl_message_action_flush_history
:
case
tgl_message_action_resend
:
case
tgl_message_action_notify_layer
:
break
;
...
...
tgl-layout.h
View file @
862ae34b
...
...
@@ -119,6 +119,7 @@ enum tgl_message_action_type {
tgl_message_action_delete_messages
,
tgl_message_action_screenshot_messages
,
tgl_message_action_flush_history
,
tgl_message_action_resend
,
tgl_message_action_notify_layer
,
tgl_message_action_typing
};
...
...
@@ -386,6 +387,10 @@ struct tgl_message_action {
int
delete_cnt
;
int
screenshot_cnt
;
enum
tgl_typing_status
typing
;
struct
{
int
start_seq_no
;
int
end_seq_no
;
};
};
};
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment