Mercurial > vim
view runtime/syntax/hercules.vim @ 33776:9503dc55b5ed v9.0.2108
patch 9.0.2108: [security]: overflow with count for :s command
Commit: https://github.com/vim/vim/commit/ac63787734fda2e294e477af52b3bd601517fa78
Author: Christian Brabandt <cb@256bit.org>
Date: Tue Nov 14 20:45:48 2023 +0100
patch 9.0.2108: [security]: overflow with count for :s command
Problem: [security]: overflow with count for :s command
Solution: Abort the :s command if the count is too large
If the count after the :s command is larger than what fits into a
(signed) long variable, abort with e_value_too_large.
Adds a test with INT_MAX as count and verify it correctly fails.
It seems the return value on Windows using mingw compiler wraps around,
so the initial test using :s/./b/9999999999999999999999999990 doesn't
fail there, since the count is wrapping around several times and finally
is no longer larger than 2147483647. So let's just use 2147483647 in the
test, which hopefully will always cause a failure
Signed-off-by: Christian Brabandt <cb@256bit.org>
author | Christian Brabandt <cb@256bit.org> |
---|---|
date | Thu, 16 Nov 2023 22:15:10 +0100 |
parents | 46763b01cd9a |
children |
line wrap: on
line source
" Vim syntax file " Language: Hercules " Maintainer: Dana Edwards <Dana_Edwards@avanticorp.com> " Extensions: *.vc,*.ev,*.rs " Last change: Nov. 9, 2001 " Comment: Hercules physical IC design verification software ensures " that an IC's physical design matches its logical design and " satisfies manufacturing rules. " quit when a syntax file was already loaded if exists("b:current_syntax") finish endif " Ignore case syn case ignore " Hercules runset sections syn keyword herculesType header assign_property alias assign syn keyword herculesType options preprocess_options syn keyword herculesType explode_options technology_options syn keyword herculesType drc_options database_options syn keyword herculesType text_options lpe_options evaccess_options syn keyword herculesType check_point compare_group environment syn keyword herculesType grid_check include layer_stats load_group syn keyword herculesType restart run_only self_intersect set snap syn keyword herculesType system variable waiver " Hercules commands syn keyword herculesStatement attach_property boolean cell_extent syn keyword herculesStatement common_hierarchy connection_points syn keyword herculesStatement copy data_filter alternate delete syn keyword herculesStatement explode explode_all fill_pattern find_net syn keyword herculesStatement flatten syn keyword herculesStatement level negate polygon_features push syn keyword herculesStatement rectangles relocate remove_overlap reverse select syn keyword herculesStatement select_cell select_contains select_edge select_net size syn keyword herculesStatement text_polygon text_property vertex area cut syn keyword herculesStatement density enclose external inside_edge syn keyword herculesStatement internal notch vectorize center_to_center syn keyword herculesStatement length mask_align moscheck rescheck syn keyword herculesStatement analysis buildsub init_lpe_db capacitor syn keyword herculesStatement device gendev nmos pmos diode npn pnp syn keyword herculesStatement resistor set_param save_property syn keyword herculesStatement connect disconnect text text_boolean syn keyword herculesStatement replace_text create_ports label graphics syn keyword herculesStatement save_netlist_database lpe_stats netlist syn keyword herculesStatement spice graphics_property graphics_netlist syn keyword herculesStatement write_milkyway multi_rule_enclose syn keyword herculesStatement if error_property equate compare syn keyword herculesStatement antenna_fix c_thru dev_connect_check syn keyword herculesStatement dev_net_count device_count net_filter syn keyword herculesStatement net_path_check ratio process_text_opens " Hercules keywords syn keyword herculesStatement black_box_file block compare_dir equivalence syn keyword herculesStatement format gdsin_dir group_dir group_dir_usage syn keyword herculesStatement inlib layout_path outlib output_format syn keyword herculesStatement output_layout_path schematic schematic_format syn keyword herculesStatement scheme_file output_block else syn keyword herculesStatement and or not xor andoverlap inside outside by to syn keyword herculesStatement with connected connected_all texted_with texted syn keyword herculesStatement by_property cutting edge_touch enclosing inside syn keyword herculesStatement inside_hole interact touching vertex " Hercules comments syn region herculesComment start="/\*" skip="/\*" end="\*/" contains=herculesTodo syn match herculesComment "//.*" contains=herculesTodo " Preprocessor directives syn match herculesPreProc "^#.*" syn match herculesPreProc "^@.*" syn match herculesPreProc "macros" " Hercules COMMENT option syn match herculesCmdCmnt "comment.*=.*" " Spacings, Resolutions, Ranges, Ratios, etc. syn match herculesNumber "-\=\<[0-9]\+L\=\>\|0[xX][0-9]\+\>" " Parenthesis sanity checker syn region herculesZone matchgroup=Delimiter start="(" matchgroup=Delimiter end=")" transparent contains=ALLBUT,herculesError,herculesBraceError,herculesCurlyError syn region herculesZone matchgroup=Delimiter start="{" matchgroup=Delimiter end="}" transparent contains=ALLBUT,herculesError,herculesBraceError,herculesParenError syn region herculesZone matchgroup=Delimiter start="\[" matchgroup=Delimiter end="]" transparent contains=ALLBUT,herculesError,herculesCurlyError,herculesParenError syn match herculesError "[)\]}]" syn match herculesBraceError "[)}]" contained syn match herculesCurlyError "[)\]]" contained syn match herculesParenError "[\]}]" contained " Hercules output format "syn match herculesOutput "([0-9].*)" "syn match herculesOutput "([0-9].*\;.*)" syn match herculesOutput "perm\s*=.*(.*)" syn match herculesOutput "temp\s*=\s*" syn match herculesOutput "error\s*=\s*(.*)" "Modify the following as needed. The trade-off is performance versus functionality. syn sync lines=100 " Define the default highlighting. " Only when an item doesn't have highlighting yet hi def link herculesStatement Statement hi def link herculesType Type hi def link herculesComment Comment hi def link herculesPreProc PreProc hi def link herculesTodo Todo hi def link herculesOutput Include hi def link herculesCmdCmnt Identifier hi def link herculesNumber Number hi def link herculesBraceError herculesError hi def link herculesCurlyError herculesError hi def link herculesParenError herculesError hi def link herculesError Error let b:current_syntax = "hercules" " vim: ts=8