Messages in this thread | | | Date | Fri, 3 Oct 2014 12:07:15 +0200 | Subject | Re: [BUG] perf tools: off-by-one error in map_groups__find_ams() | From | Stephane Eranian <> |
| |
On Fri, Oct 3, 2014 at 10:09 AM, Jiri Olsa <jolsa@redhat.com> wrote: > On Thu, Oct 02, 2014 at 06:40:14PM +0200, Stephane Eranian wrote: >> On Thu, Oct 2, 2014 at 10:36 AM, Jiri Olsa <jolsa@redhat.com> wrote: >> > On Wed, Oct 01, 2014 at 09:16:31PM +0200, Stephane Eranian wrote: >> >> Hi, >> >> >> >> It appears that there is a off-by-one bug in map_groups__find_ams(). >> >> The upper-bound check in the test below should be >= because >> >> end = start + len; The end address is outside the range. >> >> >> >> Please confirm. >> >> >> >> >> >> int map_groups__find_ams(struct addr_map_symbol *ams, symbol_filter_t filter) >> >> { >> >> if (ams->addr < ams->map->start || ams->addr > ams->map->end) { >> > >> > yep, looks like bug to me >> > >> Are you providing a fix or should I? > > please go ahead > Based on the same reasoning, I am wondering about the following too:
util/map.c: int map_groups__fixup_overlappings() {
after->start = map->end + 1; ^^^ should not be there } The first byte after a map is at map->end. Range if [start;end[
| |