-
Notifications
You must be signed in to change notification settings - Fork 370
Open
Description
What happened?
max_datagram_frame_size类型目前存在uint64_t和uint16_t:
typedef struct {
uint64_t max_datagram_frame_size;
} xqc_transport_params_t;
typedef struct {
...
uint16_t max_datagram_frame_size;
} xqc_trans_settings_t;
typedef struct {
...
uint16_t max_datagram_frame_size;
} xqc_conn_settings_t;
typedef struct {
...
uint16_t max_datagram_frame_size;
} xqc_conn_public_local_trans_settings_t;
typedef struct {
...
uint16_t max_datagram_frame_size;
} xqc_conn_public_remote_trans_settings_t;
当浏览器设置max_datagram_frame_size为65536时,xqc_transport_params_t转换至xqc_conn_settings_t会溢出进而导致判断对端的数据报支持性发生错误(比如conn->remote_settings.max_datagram_frame_size == 0):
xqc_int_t
xqc_conn_set_remote_transport_params(...)
{
...
/* copy settings from transport parameters */
xqc_trans_settings_t *settings = &conn->remote_settings;
...
settings->max_datagram_frame_size = params->max_datagram_frame_size;
}
是否统一成uint64_t合适?
Steps To Reproduce
Information and Steps to reproduce the behavior.
Relevant log output
Metadata
Metadata
Assignees
Labels
No labels