Wireshark 3.x: macOS рдФрд░ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреА рд╕рдореАрдХреНрд╖рд╛ рдХреЗ рддрд╣рдд рдХреЛрдб рд╡рд┐рд╢реНрд▓реЗрд╖рдг

рдЪрд┐рддреНрд░ 1

Wireshark Foundation рдиреЗ рд▓реЛрдХрдкреНрд░рд┐рдп рдиреЗрдЯрд╡рд░реНрдХ рдЯреНрд░реИрдлрд╝рд┐рдХ рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдХрд╛ рдЕрдВрддрд┐рдо рд╕реНрдерд┐рд░-рд╕рдВрд╕реНрдХрд░рдг рдЬрд╛рд░реА рдХрд┐рдпрд╛ - Wireshark 3.0.0ред рдирдИ рд░рд┐рд▓реАрдЬрд╝ рдХрдИ рдмрдЧреЛрдВ рдХреЛ рдареАрдХ рдХрд░рддреА рд╣реИ, рдЕрдм рдирдП рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реИ, рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛ Npcap WinPcap рдкрд░ рдбреНрд░рд╛рдЗрд╡рд░ рдХреЛ рдмрджрд▓ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдпрд╣рд╛рдВ рд╡рд╣ рдЬрдЧрд╣ рд╣реИ рдЬрд╣рд╛рдВ рдШреЛрд╖рдгрд╛ рдХреА рд╕рдорд╛рдкреНрддрд┐ рд╕рдорд╛рдкреНрдд рд╣реЛ рдЬрд╛рддреА рд╣реИ рдФрд░ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рдмрдЧ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╣рдорд╛рд░рд╛ рдиреЛрдЯ рд╢реБрд░реВ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред рд░рд┐рд▓реАрдЬ рд╕реЗ рдкрд╣рд▓реЗ рдмрдЧреНрд╕ рдХреЛ рдареАрдХ рдХрд░рдиреЗ рдореЗрдВ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд▓реЗрдЦрдХреЛрдВ рдиреЗ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдЕрдкрдирд╛ рд╕рд░реНрд╡рд╢реНрд░реЗрд╖реНрда рдкреНрд░рджрд░реНрд╢рди рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИред

рдЪрд▓рд┐рдП рдЕрдм рдПрдХ рдирдпрд╛ рд░рд┐рд▓реАрдЬрд╝ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдордХрд╕рдж рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рдЕрднреА рд╕реЗ рд╣реА рд╣реЙрдЯрдлрд╝рд┐рдХреНрд╕ рдЗрдХрдЯреНрдард╛ рдХрд░рддреЗ рд╣реИрдВ :)ред

рдкрд░рд┐рдЪрдп


Wireshark рдиреЗрдЯрд╡рд░реНрдХ рдЯреНрд░реИрдлрд╝рд┐рдХ рдХреЛ рдкрдХрдбрд╝рдиреЗ рдФрд░ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреНрд░рд╕рд┐рджреНрдз рдЙрдкрдХрд░рдг рд╣реИред рдХрд╛рд░реНрдпрдХреНрд░рдо рдЬреНрдЮрд╛рдд рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХреЗ рд╡рд┐рд╢рд╛рд▓ рдмрд╣реБрдордд рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдЗрд╕рдореЗрдВ рд╕рд╣рдЬ рдФрд░ рддрд╛рд░реНрдХрд┐рдХ рдЧреНрд░рд╛рдлрд┐рдХрд▓ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рд╣реИ, рдлрд┐рд▓реНрдЯрд░ рдХреА рдПрдХ рд╢рдХреНрддрд┐рд╢рд╛рд▓реА рдкреНрд░рдгрд╛рд▓реА рд╣реИред Wireshark рдХреНрд░реЙрд╕-рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рд╣реИ, рдРрд╕реЗ OS рдореЗрдВ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдЬреИрд╕реЗ: Windows, Linux, macOS, Solaris, FreeBSD, NetBSD рдФрд░ рдХрдИ рдЕрдиреНрдпред

рд╕реНрд░реЛрдд рдХреЛрдб рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдордиреЗ PVS-Studio рд╕реНрдереИрддрд┐рдХ рдХреЛрдб рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ред рд╕реНрд░реЛрдд рдХреЛрдб рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдкрд╣рд▓реЗ рд╣рдореЗрдВ рдПрдХ рдУрдПрд╕ рдореЗрдВ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЛ рд╕рдВрдХрд▓рд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдереАред рдкрд╕рдВрдж рди рдХреЗрд╡рд▓ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рдХреНрд░реЙрд╕ рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдкреНрд░рдХреГрддрд┐ рдХреЗ рдХрд╛рд░рдг рд╡рд┐рд╕реНрддреГрдд рдереА, рдмрд▓реНрдХрд┐ рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдХреЗ рдХрд╛рд░рдг рднреА рдереАред рдореИрдВрдиреЗ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХреЗ рд▓рд┐рдП macOS рдХреЛ рдЪреБрдирд╛ред рдЖрдк рд╡рд┐рдВрдбреЛрдЬ рдФрд░ рд▓рд┐рдирдХреНрд╕ рдХреЗ рддрд╣рдд рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рднреА рдЪрд▓рд╛ рд╕рдХрддреЗ рд╣реИрдВред

рдореИрдВ рдХреЛрдб рдЧреБрдгрд╡рддреНрддрд╛ рдкрд░ рд╡рд┐рд╢реЗрд╖ рдзреНрдпрд╛рди рдЖрдХрд░реНрд╖рд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рдореИрдВ рдЗрд╕реЗ рдмрдбрд╝реЗ рдмрд┐рдВрджреБ рдирд╣реАрдВ рджреЗ рд╕рдХрддрд╛ред рдпрд╣ рдПрдХ рд╡реНрдпрдХреНрддрд┐рдкрд░рдХ рдЖрдХрд▓рди рд╣реИ, рд▓реЗрдХрд┐рди рдЪреВрдВрдХрд┐ рд╣рдо рдирд┐рдпрдорд┐рдд рд░реВрдк рд╕реЗ рдмрд╣реБрдд рд╕рд╛рд░реА рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреА рдЬрд╛рдВрдЪ рдХрд░рддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдореЗрд░реЗ рдкрд╛рд╕ рд╕рдВрджрд░реНрдн рдХрд╛ рдПрдХ рдврд╛рдВрдЪрд╛ рд╣реИред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рдЬреЛ рдХреБрдЫ рднреА рдЦрдбрд╝рд╛ рд╣реИ рд╡рд╣ рдмрд╣реБрдд рдХрдо рдорд╛рддреНрд░рд╛ рдореЗрдВ рдХреЛрдб рдХреЗ рд▓рд┐рдП рдкреАрд╡реАрдПрд╕-рд╕реНрдЯреВрдбрд┐рдпреЛ рдЪреЗрддрд╛рд╡рдиреА рд╣реИред рдХреБрд▓ рдорд┐рд▓рд╛рдХрд░, рдЗрд╕ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рд▓рд┐рдП рд╕рднреА рд╕реНрддрд░реЛрдВ рдХреА 3500 рд╕реЗ рдЕрдзрд┐рдХ рдЪреЗрддрд╛рд╡рдирд┐рдпрд╛рдБ рд╢реБрд░реВ рд╣реБрдИрдВред рдпрд╣ рдЙрди рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЗ рд▓рд┐рдП рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╣реИ, рдЬреЛ рдЖрдорддреМрд░ рдкрд░ рд╕реНрдерд┐рд░ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдЙрдкрдХрд░рдг, рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдореБрдлреНрдд рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВред рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреА рдЧреБрдгрд╡рддреНрддрд╛ рдХреА рдУрд░ рдЗрд╢рд╛рд░рд╛ рдХрд░рддреЗ рд╣реБрдП рдПрдХ рдЕрдиреНрдп рдХрд╛рд░рдХ рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рджреНрд╡рд╛рд░рд╛ рдмрд╛рд░-рдмрд╛рд░ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдореИрдВ рд╕рдорд╛рди-рдкреНрд░рдХрд╛рд░ рдХреЗ рдХреЛрдб рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХрд╛ рд╣рд╡рд╛рд▓рд╛ рдирд╣реАрдВ рджреВрдВрдЧрд╛, рдЬрдмрдХрд┐ рдХреБрдЫ рд╕рдорд╛рди рддреНрд░реБрдЯрд┐рдпрд╛рдВ рд╕реИрдХрдбрд╝реЛрдВ рд╕реНрдерд╛рдиреЛрдВ рдкрд░ рд╣реЛрддреА рд╣реИрдВред

рдРрд╕реЗ рдЖрд╡реЗрд╖рдг рднреА рдХреЛрдб рдЧреБрдгрд╡рддреНрддрд╛ рдХреЛ рдмрдврд╝рд╛рд╡рд╛ рдирд╣реАрдВ рджреЗрддреЗ рд╣реИрдВ:

/* Input file: packet-acse-template.c */ #line 1 "./asn1/acse/packet-acse-template.c" 

рдкреВрд░реА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рдЙрдирдореЗрдВ рд╕реЗ 1000 рд╕реЗ рдЕрдзрд┐рдХ рд╣реИрдВред рдЗрд╕ рддрд░рд╣ рдХреЗ рдЖрд╡реЗрд╖рдг рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреБрдХреНрдд рдлрд╛рдЗрд▓реЛрдВ рдХреЗ рд╕рд╛рде рдЬрд╛рд░реА рдЪреЗрддрд╛рд╡рдиреА рд╕реЗ рдореЗрд▓ рдХрд░рдирд╛ рдЕрдзрд┐рдХ рдХрдард┐рди рдмрдирд╛рддреЗ рд╣реИрдВред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдФрд╕рдд рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЛ рдЗрд╕ рддрд░рд╣ рдХреЗ рдХреЛрдб рдХреЛ рдмрдирд╛рдП рд░рдЦрдиреЗ рд╕реЗ рдХрд┐рдХ рдирд╣реАрдВ рдорд┐рд▓реЗрдЧреАред

рд▓реЗрдЦрди рддреНрд░реБрдЯрд┐рдпрд╛рдВ


рдЪреЗрддрд╛рд╡рдиреА рез

V641 рдЖрд╡рдВрдЯрд┐рдд рд╕реНрдореГрддрд┐ рдмрдлрд╝рд░ рдХрд╛ рдЖрдХрд╛рд░ рддрддреНрд╡ рдЖрдХрд╛рд░ рдХрд╛ рдПрдХ рд╕реЗ рдЕрдзрд┐рдХ рдирд╣реАрдВ рд╣реИред mate_setup.c 100
 extern mate_cfg_gog* new_gogcfg(mate_config* mc, gchar* name) { mate_cfg_gog* cfg = (mate_cfg_gog *)g_malloc(sizeof(mate_cfg_gop)); .... } 

рджреЛ рдкреНрд░рдХрд╛рд░ рдХреА рд╕рдВрд░рдЪрдирд╛рдПрдВ рд╣реИрдВ: mate_cfg_gog рдФрд░ mate_cfg_gop, рд╡реЗ рдмрд╣реБрдд рд╕рдорд╛рди рд╣реИрдВ, рд▓реЗрдХрд┐рди рд╕рдорд╛рди рдирд╣реАрдВ рд╣реИрдВред рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИ, рдЗрд╕ рдХреЛрдб рдореЗрдВ рдЯреБрдХрдбрд╝реЗ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдорд┐рд▓рд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреЛ рдХрд┐ рдПрдХ рдкреЙрдЗрдВрдЯрд░ рджреНрд╡рд╛рд░рд╛ рдореЗрдореЛрд░реА рддрдХ рдкрд╣реБрдВрдЪрдиреЗ рдкрд░ рдХрд╛рд░реНрдпрдХреНрд░рдо рдореЗрдВ рд╕рдВрднрд╛рд╡рд┐рдд рддреНрд░реБрдЯрд┐рдпреЛрдВ рд╕реЗ рднрд░рд╛ рд╣реЛрддрд╛ рд╣реИред

рдпрд╣рд╛рдБ рдорд┐рд╢реНрд░рд┐рдд рдбреЗрдЯрд╛ рд╕рдВрд░рдЪрдирд╛рдУрдВ рдХреЗ рдЯреБрдХрдбрд╝реЗ рд╣реИрдВ:

 typedef struct _mate_cfg_gog { gchar* name; GHashTable* items; guint last_id; GPtrArray* transforms; LoAL* keys; AVPL* extra; float expiration; gop_tree_mode_t gop_tree_mode; gboolean show_times; .... } mate_cfg_gog; typedef struct _mate_cfg_gop { gchar* name; guint last_id; GHashTable* items; GPtrArray* transforms; gchar* on_pdu; AVPL* key; AVPL* start; AVPL* stop; AVPL* extra; float expiration; float idle_timeout; float lifetime; gboolean drop_unassigned; gop_pdu_tree_t pdu_tree_mode; gboolean show_times; .... } mate_cfg_gop; 

рдЪреЗрддрд╛рд╡рдиреА реи

V519 'HDR_TCP.dest_port' рдЪрд░ рдХреЛ рдХреНрд░рдорд┐рдХ рд░реВрдк рд╕реЗ рджреЛ рдмрд╛рд░ рдорд╛рди рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рд╢рд╛рдпрдж рдпрд╣ рдПрдХ рдЧрд▓рддреА рд╣реИред рдЪреЗрдХ рд▓рд╛рдЗрдиреЗрдВ: 495, 496. text_import.c 496

 void write_current_packet (void) { .... HDR_TCP.source_port =isOutbound ? g_htons(hdr_dest_port):g_htons(hdr_src_port); HDR_TCP.dest_port = isOutbound ? g_htons(hdr_src_port) :g_htons(hdr_dest_port); HDR_TCP.dest_port = g_htons(hdr_dest_port); .... } 

рдЕрдВрддрд┐рдо рдкрдВрдХреНрддрд┐ рдореЗрдВ, рд╡реИрд░рд┐рдПрдмрд▓ HDR_TCP.dest_port рдХрд╛ рдорд╛рди (рдЬрд┐рд╕рдХрд╛ рдЕрднреА рдореВрд▓реНрдпрд╛рдВрдХрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ) рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рд╣реИред

рддрд╛рд░реНрдХрд┐рдХ рддреНрд░реБрдЯрд┐рдпрд╛рдБ


рдЗрд╕ рдЦрдВрдб рдореЗрдВ, рдореИрдВ рд╕рд╢рд░реНрдд рдСрдкрд░реЗрдЯрд░реЛрдВ рдореЗрдВ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЗ рдХрдИ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХрд╛ рд╣рд╡рд╛рд▓рд╛ рджреВрдВрдЧрд╛, рдФрд░ рд╡реЗ рд╕рднреА рдПрдХ рджреВрд╕рд░реЗ рд╕реЗ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЕрд▓рдЧ рд╣реЛрдВрдЧреЗред

рдЪреЗрддрд╛рд╡рдиреА рез

V547 рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ 'рджрд┐рд╢рд╛ == 0' рд╣рдореЗрд╢рд╛ рдЭреВрдареА рд╣реЛрддреА рд╣реИред рдкреИрдХреЗрдЯ- adb.c 291

 #define P2P_DIR_RECV 1 #define P2P_DIR_SENT 0 static void save_command(....) { .... if ( service_data && service_data->remote_id == 0 && direction == P2P_DIR_RECV) { if (direction == P2P_DIR_SENT) { service_data->remote_id = arg1; // unreachable code } else { service_data->remote_id = arg0; } .... } .... } 

рдмрд╛рд╣рд░реА рд╕реНрдерд┐рддрд┐ рдореЗрдВ, рджрд┐рд╢рд╛ рдЪрд░ рдХреА рддреБрд▓рдирд╛ рдирд┐рд░рдВрддрд░ P2P_DIR_RECV рд╕реЗ рдХреА рдЬрд╛рддреА рд╣реИред AND рдСрдкрд░реЗрдЯрд░ рдХреЗ рд╕рд╛рде рд▓рд┐рдЦреЗ рдЧрдП рднрд╛рд╡реЛрдВ рдХреЗ рдЕрдиреБрд╕рд╛рд░, рдЖрдВрддрд░рд┐рдХ рд╕реНрдерд┐рддрд┐ рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╕рдордп, рдЪрд░ рджрд┐рд╢рд╛ рдХрд╛ рдорд╛рди рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдПрдХ рдФрд░ рд╕реНрдерд┐рд░ P2P_DIR_SENT рд╕реЗ рднрд┐рдиреНрди рд╣реЛрдЧрд╛ред

рдЪреЗрддрд╛рд╡рдиреА реи

V590 '(рдкреНрд░рдХрд╛рд░ == 0x1) рдХрд╛ рдирд┐рд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ || (рдкреНрд░рдХрд╛рд░! = 0x4) 'рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ред рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдЕрддреНрдпрдзрд┐рдХ рд╣реИ рдпрд╛ рдПрдХ рдЧрд▓рдд рдЪрд┐рддреНрд░рдг рд╣реИред рдкреИрдХреЗрдЯ- fcsb3.c 686

 static int dissect_fc_sbccs (....) { .... else if ((type == FC_SBCCS_IU_CMD_HDR) || (type != FC_SBCCS_IU_CMD_DATA)) { .... } 

рдЗрд╕ рдХреЛрдб рдХреЗ рдЯреБрдХрдбрд╝реЗ рдХреА рддреНрд░реБрдЯрд┐ рдпрд╣ рд╣реИ рдХрд┐ рд╣рд╛рд▓рдд рдХрд╛ рдкрд░рд┐рдгрд╛рдо рдХреЗрд╡рд▓ рдПрдХ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ:

 (type != FC_SBCCS_IU_CMD_DATA) 

рдЪреЗрддрд╛рд╡рдиреА рей

V590 рдЗрд╕ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХрд╛ рдирд┐рд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВред рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдЕрддреНрдпрдзрд┐рдХ рд╣реИ рдпрд╛ рдПрдХ рдЧрд▓рдд рдЪрд┐рддреНрд░рдг рд╣реИред snort-config.c 40

 static char *skipWhiteSpace(char *source, int *accumulated_offset) { int offset = 0; /* Skip any leading whitespace */ while (source[offset] != '\0' && source[offset] == ' ') { offset++; } *accumulated_offset += offset; return source + offset; } 

рд╕рд╢рд░реНрдд рдСрдкрд░реЗрдЯрд░ рдХрд╛ рдкрд░рд┐рдгрд╛рдо рдХреЗрд╡рд▓ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХреЗ рдЗрд╕ рднрд╛рдЧ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░реЗрдЧрд╛ (рд╕реНрд░реЛрдд [рдСрдлрд╕реЗрдЯ] == '') ред рдЪреЗрдХ (рд╕реНрд░реЛрдд [рдСрдлрд╕реЗрдЯ]! = '\ 0') рдирд┐рд░рд░реНрдердХ рд╣реИ рдФрд░ рд╕реБрд░рдХреНрд╖рд┐рдд рд░реВрдк рд╕реЗ рд╣рдЯрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдпрд╣ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рддреНрд░реБрдЯрд┐ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдирд┐рд░рд░реНрдердХ рдХреЛрдб рдХреЛрдб рдХреЛ рдкрдврд╝рдирд╛ рдФрд░ рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЛ рд╕рдордЭрдирд╛ рдФрд░ рдЕрдзрд┐рдХ рдХрдард┐рди рдмрдирд╛ рджреЗрддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЗрд╕реЗ рд╕рд░рд▓ рдХрд░рдирд╛ рдмреЗрд╣рддрд░ рд╣реИред

рдЪреЗрддрд╛рд╡рдиреА рек

V547 рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ 'eras_pos! = NULL' рд╣рдореЗрд╢рд╛ рд╕рддреНрдп рд╣реЛрддреА рд╣реИред reedsolomon.c 659

 int eras_dec_rs(dtype data[NN], int eras_pos[NN-KK], int no_eras) { .... if(eras_pos != NULL){ for(i=0;i<count;i++){ if(eras_pos!= NULL) eras_pos[i] = INDEX_TO_POS(loc[i]); } } .... } 

рд╢рд╛рдпрдж, рд╣рдо рдПрдХ рдирд┐рд░рд░реНрдердХ рдЪреЗрдХ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рд╢рд╛рдпрдж рдПрдХ рдЯрд╛рдЗрдкреЛ рдХреЗ рд╕рд╛рде, рдФрд░ рдПрдХ рдЕрдиреНрдп рдЪреАрдЬ рдХреЛ рдЕрдЧрд░ рдЖрдИ рдмреНрд▓реЙрдХ рдХреА рд╢рд░реНрддреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдореЗрдВ рдЪреЗрдХ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рд╣реИред

рдЕрдЬреАрдм рдмрд╛рдд рд╣реИ


рдЪреЗрддрд╛рд╡рдиреА рез

V547 рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ 'рд╕рдм_рдбрд┐рд╕реЗрдХреНрдЯрд░реНрд╕! = NULL' рд╣рдореЗрд╢рд╛ рд╕рддреНрдп рд╣реЛрддрд╛ рд╣реИред рдХреИрдкреНрдЪрд░_рдбрд┐рд╕реЗрдХреНрдЯрд░реНрд╕ред рд╕реАрд╕реА 129

 void capture_dissector_add_uint(....) { .... sub_dissectors = (struct capture_dissector_table*)g_hash_table_lookup(....); if (sub_dissectors == NULL) { fprintf(stderr, "OOPS: Subdissector \"%s\" not found ... \n", name); if (getenv("WIRESHARK_ABORT_ON_DISSECTOR_BUG") != NULL) abort(); return; } g_assert(sub_dissectors != NULL); // <= .... } 

G_assert рдкреЙрдЗрдВрдЯрд░ рдХрд╛ рдЪреЗрдХ рдпрд╣рд╛рдВ рдмреЗрдорд╛рдиреА рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕рд╕реЗ рдкрд╣рд▓реЗ рд╣реА рдкреЙрдЗрдВрдЯрд░ рдЪреЗрдХ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рд╢рд╛рдпрдж, рдХреЗрд╡рд▓ g_assert рдЗрд╕ рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ рдерд╛ рдФрд░ рдПрдХ рдбреЗрд╡рд▓рдкрд░ рдЗрд╕реЗ рдирд┐рдХрд╛рд▓рдирд╛ рднреВрд▓ рдЧрдпрд╛ рдерд╛, рд▓реЗрдХрд┐рди рд╢рд╛рдпрдж рдпрд╣рд╛рдВ рдПрдХ рд╕рдВрд░рдЪрдирд╛ рдлрд╝реАрд▓реНрдб рдХреА рдЬрд╛рдБрдЪ рдХреА рдЬрд╛рдиреА рдЪрд╛рд╣рд┐рдП рдереАред

рдЪреЗрддрд╛рд╡рдиреА реи

V547 рдПрдХреНрд╕рдкреНрд░реЗрд╢рди 'i <count' рд╣рдореЗрд╢рд╛ рд╕рдЪ рд╣реЛрддрд╛ рд╣реИред рдкреИрдХреЗрдЯ- netflow.c 10363

 static int dissect_v9_v10_template_fields(....) { .... count = tmplt_p->field_count[fields_type]; for(i=0; i<count; i++) { .... if (tmplt_p->fields_p[fields_type] != NULL) { DISSECTOR_ASSERT (i < count); // <= tmplt_p->fields_p[fields_type][i].type = type; tmplt_p->fields_p[fields_type][i].length = length; tmplt_p->fields_p[fields_type][i].pen = pen; tmplt_p->fields_p[fields_type][i].pen_str = pen_str; if (length != VARIABLE_LENGTH) {/ tmplt_p->length += length; } } .... } .... } 

рдпрд╣ рд╕реНрдкрд╖реНрдЯ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдореБрдЦрд░ , рдЬреЛ рд▓реВрдк рд╕реЗ рд╕реНрдерд┐рддрд┐ рдХреЛ рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рдХрд░рддрд╛ рд╣реИ, рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ рд╣реЛрддрд╛ рд╣реИред рд▓реВрдк рдХрд╛рдЙрдВрдЯрд░ рд╢рд░реАрд░ рдореЗрдВ рдирд╣реАрдВ рдмрджрд▓реЗрдЧрд╛ред

рд╕рдВрдХреЗрдд рдХреЗ рд╕рд╛рде рддреНрд░реБрдЯрд┐рдпрд╛рдБ


рдЪреЗрддрд╛рд╡рдиреА рез

V595 nullptr рдХреЗ рдЦрд┐рд▓рд╛рдл рд╕рддреНрдпрд╛рдкрд┐рдд рд╣реЛрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ 'si-> conv' рдкреЙрдЗрдВрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдЬрд╛рдБрдЪ рд▓рд╛рдЗрдиреЗрдВ: 2135, 2144. рдкреИрдХреЗрдЯ-smb2.c 2135

 static int dissect_smb2_fid(....) { .... g_hash_table_insert(si->conv->fids, sfi, sfi); // <= si->file = sfi; if (si->saved) { si->saved->file = sfi; si->saved->policy_hnd = policy_hnd; } if (si->conv) { // <= eo_file_info = (.... *)g_hash_table_lookup(si->conv->files,&policy_hnd); .... } .... } 

рд╕реВрдЪрдХ si-> рдирд▓ рдХреЗ рд▓рд┐рдП рдЗрд╕рдХреА рдЬрд╛рдВрдЪ рд╕реЗ рдкрд╣рд▓реЗ рдХреБрдЫ рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХреЛ рд╕рдВрдХреНрд╖рд┐рдкреНрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

рдЪреЗрддрд╛рд╡рдиреА реи

V774 рдореЗрдореЛрд░реА рдЬрд╛рд░реА рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж 'рдкреНрд░реЛрдЯреЛрдЬ' рдкреЙрдЗрдВрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдкреИрдХреЗрдЯ- k12.c 311

 static gboolean k12_update_cb(void* r, char** err) { gchar** protos; .... for (i = 0; i < num_protos; i++) { if ( ! (h->handles[i] = find_dissector(protos[i])) ) { h->handles[i] = data_handle; h->handles[i+1] = NULL; g_strfreev(protos); *err = g_strdup_printf("Could not find dissector for: '%s'", protos[i]); return FALSE; } } .... } 

рдкреНрд░реЛрдЯреЛрд╕ рддрд╛рд░ рдХреА рдПрдХ рд╕рд░рдгреА рд╣реИред рдХрд╛рд░реНрдпрдХреНрд░рдо рдореЗрдВ рдПрдХ рд╡рд┐рд╢реЗрд╖ рдорд╛рдорд▓реЗ рдХреЛ рд╕рдВрднрд╛рд▓рддреЗ рд╕рдордп рдЗрд╕ рд╕рд░рдгреА рдХреЛ рдкрд╣рд▓реЗ g_strfreev рдлрд╝рдВрдХреНрд╢рди рджреНрд╡рд╛рд░рд╛ рд╕рд╛рдлрд╝ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдлрд┐рд░ рдЗрд╕ рд╕рд░рдгреА рдХрд╛ рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рддреНрд░реБрдЯрд┐ рд╕рдВрджреЗрд╢ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИ, рдЗрди рд▓рд╛рдЗрдиреЛрдВ рдХреЛ рдЖрдкрд╕ рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП:

 *err = g_strdup_printf("Could not find dissector for: '%s'", protos[i]); g_strfreev(protos); 

рд╕реНрдореГрддрд┐ рд▓реАрдХ


V773 'ptmpstr' рдкреЙрдЗрдВрдЯрд░ рдХреЛ рдореЗрдореЛрд░реА рдЬрд╛рд░реА рдХрд┐рдП рдмрд┐рдирд╛ рджреЛ рдмрд╛рд░ рдорд╛рди рджрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдПрдХ рд╕реНрдореГрддрд┐ рд░рд┐рд╕рд╛рд╡ рд╕рдВрднрд╡ рд╣реИред idl2wrs.c 2436

 static void parsetypedefunion(int pass) { char tmpstr[BASE_BUFFER_SIZE], *ptmpstr; .... while(num_pointers--){ g_snprintf(tmpstr, BASE_BUFFER_SIZE, "%s_%s", ptmpstr, "unique"); FPRINTF(eth_code, "static int\n"); FPRINTF(eth_code, "....", tmpstr); FPRINTF(eth_code, "{\n"); FPRINTF(eth_code, " ....", ptmpstr, ti->str); FPRINTF(eth_code, " return offset;\n"); FPRINTF(eth_code, "}\n"); FPRINTF(eth_code, "\n"); ptmpstr=g_strdup(tmpstr); } .... } 

G_strdup рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдмрд╛рдж рд╣рдореЗрдВ рдХреБрдЫ рдмрд┐рдВрджреБ рдкрд░ g_free рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреЙрд▓ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдпрд╣ рджрд┐рдП рдЧрдП рдХреЛрдб рд╕реНрдирд┐рдкреЗрдЯ рдореЗрдВ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдкреНрд░рддреНрдпреЗрдХ рдкреБрдирд░рд╛рд╡реГрддрд┐ рдкрд░ рд▓реВрдк рдореЗрдВ рдореЗрдореЛрд░реА рдХрд╛ рдПрдХ рдирдпрд╛ рд╣рд┐рд╕реНрд╕рд╛ рдЖрд╡рдВрдЯрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣рд╛рдБ рдХрдИ рдореЗрдореЛрд░реА рд▓реАрдХреНрд╕ рдЖрддреЗ рд╣реИрдВред

рд╕рдорд╛рди рдХреЛрдб рдЕрдВрд╢реЛрдВ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рдЕрдиреНрдп рдЪреЗрддрд╛рд╡рдиреА:

  • V773 'ptmpstr' рдкреЙрдЗрдВрдЯрд░ рдХреЛ рдореЗрдореЛрд░реА рдЬрд╛рд░реА рдХрд┐рдП рдмрд┐рдирд╛ рджреЛ рдмрд╛рд░ рдорд╛рди рджрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдПрдХ рд╕реНрдореГрддрд┐ рд░рд┐рд╕рд╛рд╡ рд╕рдВрднрд╡ рд╣реИред idl2wrs.c 2447
  • V773 'ptmpstr' рдкреЙрдЗрдВрдЯрд░ рдХреЛ рдореЗрдореЛрд░реА рдЬрд╛рд░реА рдХрд┐рдП рдмрд┐рдирд╛ рджреЛ рдмрд╛рд░ рдорд╛рди рджрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдПрдХ рд╕реНрдореГрддрд┐ рд░рд┐рд╕рд╛рд╡ рд╕рдВрднрд╡ рд╣реИред idl2wrs.c 2713
  • V773 'ptmpstr' рдкреЙрдЗрдВрдЯрд░ рдХреЛ рдореЗрдореЛрд░реА рдЬрд╛рд░реА рдХрд┐рдП рдмрд┐рдирд╛ рджреЛ рдмрд╛рд░ рдорд╛рди рджрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдПрдХ рд╕реНрдореГрддрд┐ рд░рд┐рд╕рд╛рд╡ рд╕рдВрднрд╡ рд╣реИред idl2wrs.c 2728
  • V773 'ptmpstr' рдкреЙрдЗрдВрдЯрд░ рдХреЛ рдореЗрдореЛрд░реА рдЬрд╛рд░реА рдХрд┐рдП рдмрд┐рдирд╛ рджреЛ рдмрд╛рд░ рдорд╛рди рджрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдПрдХ рд╕реНрдореГрддрд┐ рд░рд┐рд╕рд╛рд╡ рд╕рдВрднрд╡ рд╣реИред idl2wrs.c 2732
  • V773 'ptmpstr' рдкреЙрдЗрдВрдЯрд░ рдХреЛ рдореЗрдореЛрд░реА рдЬрд╛рд░реА рдХрд┐рдП рдмрд┐рдирд╛ рджреЛ рдмрд╛рд░ рдорд╛рди рджрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдПрдХ рд╕реНрдореГрддрд┐ рд░рд┐рд╕рд╛рд╡ рд╕рдВрднрд╡ рд╣реИред idl2wrs.c 2745

рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рдХреЛрдб рдореЗрдВ рдХрдИ рдЕрдиреНрдп рд╕рдорд╛рди рдорд╛рдорд▓реЗ рд╣реИрдВ, рдЬрд╣рд╛рдВ рдореЗрдореЛрд░реА рд░рд┐рд▓реАрдЬрд╝ рд╣реЛ рдЬрд╛рддреА рд╣реИред

рд╡рд┐рд╡рд┐рдз


рдЪреЗрддрд╛рд╡рдиреА рез

V535 рдЪрд░ 'i' рдХрд╛ рдЙрдкрдпреЛрдЧ рдЗрд╕ рд▓реВрдк рдХреЗ рд▓рд┐рдП рдФрд░ рдмрд╛рд╣рд░реА рд▓реВрдк рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИред рдЪреЗрдХ рд▓рд╛рдЗрдиреЗрдВ: 7716, 7798. рдкреИрдХреЗрдЯ-рдУрдкрд╛-рдореИрдб.рдХред 7798

 /* Parse GetVFInfo MAD from the Performance Admin class. */ static gint parse_GetVFInfo(....) { .... for (i = 0; i < records; i++) { // <= line 7716 .... for (i = 0; i < PM_UTIL_BUCKETS; i++) { // <= line 7748 GetVFInfo_Util_Stats_Bucket_item = proto_tree_add_item(....); proto_item_set_text(....); local_offset += 4; } .... for (i = 0; i < PM_ERR_BUCKETS; i++) { // <= line 7798 GetVFInfo_Error_Stats_Bucket_item = proto_tree_add_item(....); proto_item_set_text(....); local_offset += 4; .... } .... } .... } 

рдПрдХ рдмрд╣реБрдд рд▓рдВрдмреЗ рдлрд╝рдВрдХреНрд╢рди рдбреЗрд╡рд▓рдкрд░реНрд╕ рдореЗрдВ рд╕рд╛рд╣рд╕рдкреВрд░реНрд╡рдХ рд▓реВрдк рдХрд╛рдЙрдВрдЯрд░ рдХреЗ рдореВрд▓реНрдп рдХреЛ рдмрджрд▓рддреЗ рд╣реИрдВ, рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдХреБрдЫ рдмрд╛рд░ рднреА рдХрд░ рд░рд╣реЗ рд╣реИрдВред рд╣рдо рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдирд╣реАрдВ рдХрд╣ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдпрд╣ рдПрдХ рддреНрд░реБрдЯрд┐ рд╣реИ рдпрд╛ рдирд╣реАрдВ, рд╣рд╛рд▓рд╛рдВрдХрд┐, рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рд▓рдЧрднрдЧ 10 рдРрд╕реЗ рд▓реВрдк рд╣реИрдВред

рдЪреЗрддрд╛рд╡рдиреА реи

V763 рдкреИрд░рд╛рдореАрдЯрд░ 'рдЖрдЗрдЯрдо' рд╣рдореЗрд╢рд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдлрд╝рдВрдХреНрд╢рди рдмреЙрдбреА рдореЗрдВ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦрд╛ рдЬрд╛рддрд╛ рд╣реИред рдкреИрдХреЗрдЯ- cdma2k.c 1324

 static void cdma2k_message_ORDER_IND(proto_item *item, ....) { guint16 addRecLen = -1, ordq = -1, rejectedtype = -1; guint16 l_offset = -1, rsc_mode_ind = -1, ordertype = -1; proto_tree *subtree = NULL, *subtree1 = NULL; item = proto_tree_add_item(tree,hf_cdma2k_OrderIndMsg, tvb, ....); // <= subtree = proto_item_add_subtree(item, ett_cdma2k_subtree1); .... } 

рдЖрдЗрдЯрдо рдкреЙрдЗрдВрдЯрд░, рдлрд╝рдВрдХреНрд╢рди рджреНрд╡рд╛рд░рд╛ рд▓рд┐рдпрд╛ рдЧрдпрд╛, рддреБрд░рдВрдд рджреВрд╕рд░реЗ рдореВрд▓реНрдп рдХреЗ рд╕рд╛рде рдмрджрд▓ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣ рдмрд╣реБрдд рд╣реА рд╕рдВрджрд┐рдЧреНрдз рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдХреЛрдб рдореЗрдВ рдХрдИ рджрд░реНрдЬрди рдРрд╕реЗ рд╕реНрдерд╛рди рд╣реЛрддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдпрд╣ рддрдп рдХрд░рдирд╛ рдХрдард┐рди рд╣реИ рдХрд┐ рдпрд╣ рддреНрд░реБрдЯрд┐ рд╣реИ рдпрд╛ рдирд╣реАрдВред рдореИрдВ рдПрдХ рдФрд░ рдмрдбрд╝реЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ рд╕рдорд╛рди рдХреЛрдб рдХреЗ рд╕рд╛рде рдЖрдпрд╛ рдерд╛, рдРрд╕рд╛ рдХреЛрдб рд╡рд╣рд╛рдВ рдерд╛, рдХрд┐рд╕реА рдиреЗ рднреА рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЛ рдмрджрд▓рдиреЗ рдХреА рд╣рд┐рдореНрдордд рдирд╣реАрдВ рдХреАред

рдЪреЗрддрд╛рд╡рдиреА рей

V762 рдпрд╣ рд╕рдВрднрд╡ рд╣реИ рдХрд┐ рдПрдХ рдЖрднрд╛рд╕реА рдлрд╝рдВрдХреНрд╢рди рдЧрд▓рдд рддрд░реАрдХреЗ рд╕реЗ рдУрд╡рд░рд░рд╛рдЗрдб рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдлрдВрдХреНрд╢рди 'рд╣реИрдбрд░рдбреИрдЯрд╛' рдХреЗ рддреАрд╕рд░реЗ рддрд░реНрдХ рдХреЛ рд╡реНрдпреБрддреНрдкрдиреНрди рд╡рд░реНрдЧ 'рдкреИрдХреЗрдЯрд▓рд╛рдЗрд╕реНрдЯрдореЙрдбрд▓' рдФрд░ рдмреЗрд╕ рдХреНрд▓рд╛рд╕ 'рдХреНрдпреВрдПрдмреНрд░реЗрдЯ рдЗрдЯреЗрдордореЙрдбрд▓' рдореЗрдВ рджреЗрдЦреЗрдВред packet_list_model.h 48

 QVariant QAbstractItemModel::headerData(int section, Qt::Orientation orientation, int role = Qt::DisplayRole) const // <= class PacketListModel : public QAbstractItemModel { Q_OBJECT public: .... QVariant headerData(int section, Qt::Orientation orientation, int role = Qt::DisplayRole | Qt::ToolTipRole) const; // <= .... }; 

рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдиреЗ рд╣реЗрдбрд░рдбреЗрдЯрд╛ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдЕрдорд╛рдиреНрдп рдЕрдзрд┐рднрд╛рд░ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдпрд╛ рд╣реИред рдлрд╝рдВрдХреНрд╢рдВрд╕ рдореЗрдВ рднреВрдорд┐рдХрд╛ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдорд╛рди рд╣реИрдВред рдпрд╣ рдЧрд▓рдд рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд╛ рдХрд╛рд░рдг рдмрди рд╕рдХрддрд╛ рд╣реИ, рди рдХрд┐ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рджреНрд╡рд╛рд░рд╛ рдЕрдкреЗрдХреНрд╖рд┐рддред

рдЪреЗрддрд╛рд╡рдиреА рек

V610 рдЕрдкрд░рд┐рднрд╛рд╖рд┐рдд рд╡реНрдпрд╡рд╣рд╛рд░ред рд╢рд┐рдлреНрдЯ рдСрдкрд░реЗрдЯрд░ '>>' рдХреА рдЬрд╛рдБрдЪ рдХрд░реЗрдВред рджрд╛рдпрд╛рдБ рдСрдкрд░реЗрдВрдб ('рдмрд┐рдЯрд╢рд┐рдлреНрдЯ' = [0..64]) рдкреНрд░рдореЛрдЯреЗрдб рд▓реЗрдлреНрдЯ рдСрдкрд░реЗрдВрдб рдХреЗ рдмрд┐рдЯреНрд╕ рдореЗрдВ рд▓рдВрдмрд╛рдИ рд╕реЗ рдЕрдзрд┐рдХ рдпрд╛ рдмрд░рд╛рдмрд░ рд╣реЛрддрд╛ рд╣реИред рдкреНрд░реЛрдЯреЛред 109 109

 static gboolean proto_item_add_bitmask_tree(...., const int len, ....) { .... if (len < 0 || len > 8) g_assert_not_reached(); bitshift = (8 - (guint)len)*8; available_bits = G_GUINT64_CONSTANT(0xFFFFFFFFFFFFFFFF) >> bitshift; .... } 

64-рдмрд┐рдЯ рд╢рд┐рдлреНрдЯ рдореЗрдВ рднрд╛рд╖рд╛ рдорд╛рдирдХ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдЕрдкрд░рд┐рднрд╛рд╖рд┐рдд рд╡реНрдпрд╡рд╣рд╛рд░ рд╣реЛрдЧрд╛ред

рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИ, рд╕рд╣реА рдХреЛрдб рдЗрд╕ рддрд░рд╣ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП:

 if (bitshift == 64) available_bits = 0; else available_bits = G_GUINT64_CONSTANT(0xFFFFFFFFFFFFFFFF) >> bitshift; 

рдирд┐рд╖реНрдХрд░реНрд╖


рдРрд╕рд╛ рд▓рдЧ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рд╕рдореАрдХреНрд╖рд╛ рдХреБрдЫ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ рджрд┐рдЦрд╛рддреА рд╣реИ, рд▓реЗрдХрд┐рди рдкреВрд░реА рд░рд┐рдкреЛрд░реНрдЯ рдореЗрдВ рдорд╛рдирд╛ рдорд╛рдорд▓реЛрдВ рджрд░реНрдЬрдиреЛрдВ рдФрд░ рд╕реИрдХрдбрд╝реЛрдВ рдмрд╛рд░ рджреЛрд╣рд░рд╛рддреЗ рд╣реИрдВред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдкреАрд╡реАрдПрд╕-рд╕реНрдЯреВрдбрд┐рдпреЛ рдЪреЗрддрд╛рд╡рдиреА рд╕рдореАрдХреНрд╖рд╛ рдкреНрд░рджрд░реНрд╢рдирдХрд╛рд░реА рдкреНрд░рдХреГрддрд┐ рдХреА рд╣реИрдВред рд╡реЗ рдЦреБрд▓реЗ рд╕реНрд░реЛрдд рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреА рдЧреБрдгрд╡рддреНрддрд╛ рдореЗрдВ рдпреЛрдЧрджрд╛рди рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рд╕реНрдерд┐рд░ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдкрджреНрдзрддрд┐ рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ рдПрдХ рдмрд╛рд░ рдХреА рдЬрд╛рдВрдЪ рд╕рдмрд╕реЗ рдЕрдХреНрд╖рдо рд╣реИред

рдЖрдк рдкреВрд░реА рд░рд┐рдкреЛрд░реНрдЯ рд╕реНрд╡рдпрдВ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЙрд╕рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдмрд╕ рдкреАрд╡реАрдПрд╕-рд╕реНрдЯреВрдбрд┐рдпреЛ рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдХреЛ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдиреЗ рдФрд░ рдЪрд▓рд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

Source: https://habr.com/ru/post/hi447156/


All Articles