Skip to content

[Bug]: max_datagram_frame_size类型不统一,导致溢出 #501

@haojiubujian0

Description

@haojiubujian0

What happened?

max_datagram_frame_size类型目前存在uint64_tuint16_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

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions