[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [gpsd-dev] C Client API Issues
From: |
Gary E. Miller |
Subject: |
Re: [gpsd-dev] C Client API Issues |
Date: |
Thu, 21 Jul 2016 12:35:47 -0700 |
Yo Robert!
Good analysis. Patches anyone?
On Thu, 21 Jul 2016 19:19:45 +0000
Robert Norris <address@hidden> wrote:
> > From: Hal Murray <address@hidden>
>
> >address@hidden said:
> > >gpsd needs a flag so close is a noop if it isn't open.
> >> Wouldn't such a flag would need to go into the gps_data_t
> >> structure?
>
> >I was being sloppy when I said "flag". I don't care how it's
> >implemented as long as duplicate calls to close don't cause any
> >problems.
>
> Even though I was on about initialization, currently calling
> gps_close() twice will crash the client with a double free.
>
> privdata should be explicitly set to NULL after the free in
> gps_socket_close().
>
> There also looks to be issues with gps_shm_* functions too, such as:
>
> gps_shm_open() doesn't set gpsdata->privdata to NULL when attaching
> to shared memory fails.
>
> Thus if you tried to then use gps_shm_read() [which you shouldn't do
> anyway] it would probably crash.
>
> gps_shm_close() never checks if gpsdata->privdata is NULL, so again
> it would crash the client if used after an unsuccessful open.
>
> It should be easy to make these more robust against API incorrect use.
>
>
>
>
>
RGDS
GARY
---------------------------------------------------------------------------
Gary E. Miller Rellim 109 NW Wilmington Ave., Suite E, Bend, OR 97703
address@hidden Tel:+1 541 382 8588
pgp3M3gRtPlAL.pgp
Description: OpenPGP digital signature