gpsd-commit-watch
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[gpsd-commit-watch] [SCM] GPSD branch, master, updated. release-3.15-67-


From: Eric S. Raymond
Subject: [gpsd-commit-watch] [SCM] GPSD branch, master, updated. release-3.15-67-g753b966
Date: Mon, 04 Jan 2016 19:10:59 +0000

This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "GPSD".

The branch, master has been updated
       via  753b96619a490369e3c73ea55eca571f64d1b935 (commit)
       via  227605a14b89e2cb9d85e148db7f99fe825f3fe2 (commit)
      from  b6807735feafa583329b2ce4bc0d48287a64b9e8 (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
commit 753b96619a490369e3c73ea55eca571f64d1b935
Author: Eric S. Raymond <address@hidden>
Date:   Mon Jan 4 14:10:53 2016 -0500

    NEWS update.

commit 227605a14b89e2cb9d85e148db7f99fe825f3fe2
Author: Fred Wright <address@hidden>
Date:   Mon Jan 4 13:58:48 2016 -0500

    Address Savannah bug #46804: JSON satellite view parsing is somewhat broken.
    
    Fred Wright <fhgwright> writes:
    
    While trying the regression tests on a MacBook (PowerPC), I ran across
    some failures in the JSON unit test. Although this is ostensibly an
    endian issue, it turns out that the code for parsing satellite view
    data is actually incorrect for all processors, albeit more so for
    big-endian processors.
    
    The problem is that the three "integer" fields in struct satellite_t
    are defined as shorts, but parsed as ints by the JSON parser. On a
    big-endian processor, this causes the values to be misaddressed and
    hence have incorrect values, but even on a little-endian processor
    this is incorrect since it's storing four-byte values into two-byte
    fields. The unit tests don't catch this aspect, since the fields are
    favorably ordered such that the clobbered fields are clobbered before
    being written pseudo-correctly.
    
    I was able to demonstrate the "buffer overflow" misbehavior by
    modifying the test data for the last satellite to provide the fields
    in the reverse order from their order in the structure.
    
    The simple fix for this would be just to change the shorts to ints in
    the definition of struct satellite_t. On most processors, this doesn't
    even cost any memory, since the presence of the double forces
    eight-bye alignment, so the padded structure is 24 bytes regardless of
    whether the three fields in question are shorts or ints. However,
    there might be some processors with less strict alignment requirements
    where using shorts would actually be helpful.
    
    With the existing layout, the only possible fix is to add support for
    shorts to the JSON parser, and adjust the satellite-view parsing
    accordingly. The attached patch does that, as well as adding u_short
    support for completeness (though it's not currently used). It also
    provides the aforementioned change in the test data, in keeping with
    the philosophy of "create a test for what just failed, so it doesn't
    happen again".
    
    Note that using shorts for these fields would be more effective if the
    "used" field were also reduced to a short, instead of inheriting "int"
    from "bool". That would shrink the structure to 16 bytes. It could be
    further reduced to 12 bytes by using a float instead of a double for
    the "ss" field (and even a float is gross overkill for this
    purpose). This could all be more significant when MAXCHANNELS needs to
    be increased (again) to accommodate the deployment of the newer
    GNSSes.

-----------------------------------------------------------------------

Summary of changes:
 NEWS          |    6 ++++--
 json.c        |   43 +++++++++++++++++++++++++++++++++++++++++++
 json.h        |   13 ++++++++++++-
 libgps_json.c |    6 +++---
 test_json.c   |    9 +++++++--
 5 files changed, 69 insertions(+), 8 deletions(-)


hooks/post-receive
-- 
GPSD



reply via email to

[Prev in Thread] Current Thread [Next in Thread]