Skip to content

out of bounds access in string_view::find #25

@anopheles63

Description

@anopheles63

Checklist

  • 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

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions