Fix use-after-free detected by ASAN

Change-Id: Iba1c55f7f32b74f1d3b4ce31bec092527f83e5c8
Reviewed-on: https://weave-review.googlesource.com/2712
Reviewed-by: Alex Vakulenko <avakulenko@google.com>
1 file changed
tree: 17fc667e86c5ee7b108245f5f45b183448cc8ace
  1. examples/
  2. include/
  3. libweave/
  4. src/
  5. third_party/
  6. .clang-format
  7. .gitignore
  8. AUTHORS
  9. CONTRIBUTORS
  10. file_lists.mk
  11. libweave-test.pc.in
  12. libweave.pc.in
  13. LICENSE
  14. Makefile
  15. README.md
  16. tests.mk
README.md

Overview

libWeave is the library with device side implementation of Weave protocol.

Sources

Sources are located in git repository at https://weave.googlesource.com/weave/libweave/

Install Repo

Make sure you have a bin/ directory in your home directory and that it is included in your path:

mkdir ~/bin
PATH=~/bin:$PATH

Download the Repo tool and ensure that it is executable:

curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
chmod a+x ~/bin/repo

Checkout code

repo init -u https://weave.googlesource.com/weave/manifest
repo sync

Directory structure

PathDescription
include/Includes to be used by device code
src/Implementation sources
examples/Example of device code
third_party/Dependencies
Makefile, *.mk filesBuild files

Quick start on Debian/Ubuntu

Install prerequisites

sudo apt-get update
sudo apt-get install \
  autoconf \
  automake \
  binutils \
  g++ \
  hostapd \
  libavahi-client-dev \
  libcurl4-openssl-dev \
  libevent-dev \
  libexpat1-dev \
  libnl-3-dev \
  libnl-route-3-dev \
  libssl-dev \
  libtool

Prerequisites

Common

  • autoconf
  • automake
  • binutils
  • libtool
  • libexpat1-dev

For tests

  • cmake
  • gtest (included; see third_party/get_gtest.sh)
  • gmock (included; see third_party/get_gtest.sh)

For examples

  • cmake
  • hostapd
  • libavahi-client-dev
  • libcurl4-openssl-dev
  • libevhtp (included; see third_party/get_libevhtp.sh)
  • libevent-dev

Compiling

The make --jobs/-j flag is encouraged, to speed up build time. For example

make -j

which happens to be the same as

make all -j

Build library

make out/Debug/libweave.so

Build examples

make all-examples

See the examples README for details.

Testing

Run tests

make test
make export-test

or

make testall

Making changes

Configure git

Make sure to have correct user in local or global config e.g.:

git config --local user.name "User Name"
git config --local user.email user.name@example.com

Start local branch

repo start <branch name> .

Edit code and commit locally e.g.

git commit -a -v

Upload CL

repo upload .

Request code review

Go to the url from the output of “repo upload” and add reviewers.