<table border="1" cellspacing="0" cellpadding="8">
    <tr>
        <th>Issue</th>
        <td>
            <a href=https://github.com/llvm/llvm-project/issues/130185>130185</a>
        </td>
    </tr>

    <tr>
        <th>Summary</th>
        <td>
            Can Len - 1 in HeaderMapImpl::getString overflow?
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            question
      </td>
    </tr>

    <tr>
      <th>Assignees</th>
      <td>
      </td>
    </tr>

    <tr>
      <th>Reporter</th>
      <td>
          shafik
      </td>
    </tr>
</table>

<pre>
    A static analysis tool flags `Len - 1` for possible overflow if `Len` has the value `0`:

https://github.com/llvm/llvm-project/blob/27c788de759472316169795fa06d592221ac602e/clang/lib/Lex/HeaderMap.cpp#L161

A naive reading of the code does seem to indeed lead one to believe that `MaxLen` and `Len` could both be zero. I can't really convince myself this can't happen but maybe there is a constraint I am missing that prevents this.
</pre>
<img width="1" height="1" alt="" src="http://email.email.llvm.org/o/eJyUks-OnDAMxp8mXKwdgTPAcOAwbYW60u6pT-AkBtKGhJJAd_r0VabTba-VkFAs__ns70cx2skz96L-IOpPBe1pDlsfZxrtt0IFc-uvEBMlq4E8uVu0EVIIDkZHUwTRlC_s4Qkq0ZQwhg3WEKNVjiEcvI0u_AA7PtJyykwR0sxwkNs5x0vRlEJeRZm_OaU15hcOAofJpnlXJx0WgYNzx5_f07qFr6yTwEG5oAQO2Or2cjHc1t25RVk1VdO1XT1S2Zi6Q8SKdFMiCxy0Iz_lRjYXvvCbwOEzk-HtldaTXleB8qVqqt-CruDJHgwbk7F-gjDe1etgGEzgCJF5gRTAesNswDEZCJ5zSLGzfDCkmVLe9JXeHkcgb_45iQ67M6BCmkEx_OQtnOAZNHmBbcqTnbuBDv6wXjMst8guq7DxPWemdWUPak-w0E3lkbwx2AiUC2PayPoEz0ALLDbGvMld1brxwT7Fe7tTYXppOtlRwX3VnivsLq1sirm_VJfWGMNo8KxkaWpWpLnSqCS32OnC9lhiXcqyQSxr2ZwqvoyaGzlq2bTNOIpzyQtZd8r-ncI2FTbGnftKltWlLhwpdvEOIeL3nWOywQvEjOTW3z1X-xTFuXQ2pvi3S7LJcf-RPDwwBOvh3c7nZXWZJnmdOH1J293BB5ZCDsW-uf6_kbsLjwKHh_ajx18BAAD__0VPDb8">