Skip to content

Commit

Permalink
another use of potentially invalid waypt field. (GPSBabel#974)
Browse files Browse the repository at this point in the history
* another use of potentially invalid waypt field.

* fix erroneous comparison of optional waypt values.
  • Loading branch information
tsteven4 authored Jan 6, 2023
1 parent e78e14a commit 9568674
Show file tree
Hide file tree
Showing 3 changed files with 8 additions and 6 deletions.
3 changes: 3 additions & 0 deletions defs.h
Original file line number Diff line number Diff line change
Expand Up @@ -323,6 +323,9 @@ struct bounds {
#define WAYPT_GET(wpt,member,def) (((wpt)->wpt_flags.member) ? ((wpt)->member) : (def))
#define WAYPT_UNSET(wpt,member) wpt->wpt_flags.member = 0
#define WAYPT_HAS(wpt,member) ((wpt)->wpt_flags.member)
#define WAYPT_EQUAL(wpta,wptb,member) (((wpta)->wpt_flags.member && (wptb)->wpt_flags.member && \
((wpta)->member == (wptb)->member)) || \
(!(wpta)->wpt_flags.member && !(wptb)->wpt_flags.member))

/*
* This is a waypoint, as stored in the GPSR. It tries to not
Expand Down
4 changes: 2 additions & 2 deletions gtrnctr.cc
Original file line number Diff line number Diff line change
Expand Up @@ -192,11 +192,11 @@ GtrnctrFormat::gtc_waypt_pr(const Waypoint* wpt)
if (wpt->cadence) {
gtc_write_xml(0, "<Cadence>%d</Cadence>\n", wpt->cadence);
}
if (wpt->speed || wpt->power) {
if (WAYPT_HAS(wpt, speed) || wpt->power) {
gtc_write_xml(1, "<Extensions>\n");
gtc_write_xml(1, "<TPX xmlns=\"http://www.garmin.com/xmlschemas/ActivityExtension/v2\">\n");
/* see http://www8.garmin.com/xmlschemas/ActivityExtensionv2.xsd */
if (wpt->speed) {
if (WAYPT_HAS(wpt, speed)) {
gtc_write_xml(0, "<Speed>%.3f</Speed>\n", wpt->speed);
}
if (wpt->power) {
Expand Down
7 changes: 3 additions & 4 deletions trackfilter.cc
Original file line number Diff line number Diff line change
Expand Up @@ -903,12 +903,11 @@ bool TrackFilter::trackfilter_points_are_same(const Waypoint* wpta, const Waypoi
std::abs(wpta->latitude - wptb->latitude) < .00001 &&
std::abs(wpta->longitude - wptb->longitude) < .00001 &&
std::abs(wpta->altitude - wptb->altitude) < 20 &&
(WAYPT_HAS(wpta,course) == WAYPT_HAS(wptb,course)) &&
(wpta->course == wptb->course) &&
(wpta->speed == wptb->speed) &&
WAYPT_EQUAL(wpta, wptb, course) &&
WAYPT_EQUAL(wpta, wptb, speed) &&
(wpta->heartrate == wptb->heartrate) &&
(wpta->cadence == wptb->cadence) &&
(wpta->temperature == wptb->temperature);
WAYPT_EQUAL(wpta, wptb, temperature);
}

void TrackFilter::trackfilter_segment_head(const route_head* rte)
Expand Down

0 comments on commit 9568674

Please sign in to comment.