BackportCpp icon indicating copy to clipboard operation
BackportCpp copied to clipboard

out of bounds access in string_view::find

Open anopheles63 opened this issue 2 years ago • 0 comments

Checklist

  • [x] I did not find a duplicate of this bug in the Github Issues section.

Description

I get an exception reporting an out of bound index when running a program using bpstd::string_view which runs fine with a current g++/c++-stdlib. I traced the issue to an erroneous setup of the upper limit in the for loop present in string_view::find. Instead of increments = size() - v.size() the code should read increments = size() - v.size() - pos.

I cannot push to the repository, but I can provide a patch. [email protected]

Steps to reproduce

Compile and run the following code:

#include <bpstd/string_view.hpp>
#include <iostream>
using namespace bpstd;
int main() {
        string_view n("name.i");
        string_view s(".");
        string_view::size_type it(0);
        while ( it != string_view::npos ) {
                std::cout << it << std::endl;
                it = n.find(s,it+1);
        }
}

Expected Behavior

I expect the program to find the one missing match at position 4 and then exit. The output are the two digits 0 and 4 separated by a newline.

Actual Behavior

The program reports an out of bounds access in string_view::find

Extra information

current master branch, tests compile and run without errors.

  • Library version: 1.2
  • Operating System: debian testing
  • Compiler: g++ 11.2

anopheles63 avatar Mar 20 '22 20:03 anopheles63