Hello community,

here is the log from the commit of package slirp4netns for openSUSE:Factory 
checked in at 2019-12-23 22:41:16
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/slirp4netns (Old)
 and      /work/SRC/openSUSE:Factory/.slirp4netns.new.6675 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "slirp4netns"

Mon Dec 23 22:41:16 2019 rev:8 rq:757696 version:0.4.3

Changes:
--------
--- /work/SRC/openSUSE:Factory/slirp4netns/slirp4netns.changes  2019-10-25 
18:38:26.099687805 +0200
+++ /work/SRC/openSUSE:Factory/.slirp4netns.new.6675/slirp4netns.changes        
2019-12-23 22:43:21.981974470 +0100
@@ -1,0 +2,10 @@
+Wed Dec 18 08:10:07 UTC 2019 - Sascha Grunert <[email protected]>
+
+- Update to 0.4.3
+  * api: raise an error if the socket path is too long
+  * libslirp: update to v4.1.0: Including the fix for libslirp
+    sends RST to app in response to arriving FIN when containerized
+    socket is shutdown() with SHUT_WR
+  * Fix create_sandbox error
+
+-------------------------------------------------------------------

Old:
----
  slirp4netns-0.4.2.tar.xz

New:
----
  slirp4netns-0.4.3.tar.xz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ slirp4netns.spec ++++++
--- /var/tmp/diff_new_pack.UwtqNY/_old  2019-12-23 22:43:22.681974774 +0100
+++ /var/tmp/diff_new_pack.UwtqNY/_new  2019-12-23 22:43:22.685974775 +0100
@@ -1,7 +1,7 @@
 #
 # spec file for package slirp4netns
 #
-# Copyright (c) 2019 SUSE LINUX GmbH, Nuernberg, Germany.
+# Copyright (c) 2019 SUSE LLC
 #
 # All modifications and additions to the file contributed by third parties
 # remain the property of their copyright owners, unless otherwise agreed
@@ -17,7 +17,7 @@
 
 
 Name:           slirp4netns
-Version:        0.4.2
+Version:        0.4.3
 Release:        0
 Summary:        User-mode networking for unprivileged network namespaces
 License:        GPL-2.0-only AND MIT AND BSD-2-Clause

++++++ _service ++++++
--- /var/tmp/diff_new_pack.UwtqNY/_old  2019-12-23 22:43:22.721974791 +0100
+++ /var/tmp/diff_new_pack.UwtqNY/_new  2019-12-23 22:43:22.721974791 +0100
@@ -4,8 +4,8 @@
 <param 
name="url">https://github.com/rootless-containers/slirp4netns.git</param>
 <param name="scm">git</param>
 <param name="filename">slirp4netns</param>
-<param name="versionformat">0.4.2</param>
-<param name="revision">v0.4.2</param>
+<param name="versionformat">0.4.3</param>
+<param name="revision">v0.4.3</param>
 </service>
 
 <service name="recompress" mode="disabled">

++++++ slirp4netns-0.4.2.tar.xz -> slirp4netns-0.4.3.tar.xz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/slirp4netns-0.4.2/.github/workflows/main.yaml 
new/slirp4netns-0.4.3/.github/workflows/main.yaml
--- old/slirp4netns-0.4.2/.github/workflows/main.yaml   1970-01-01 
01:00:00.000000000 +0100
+++ new/slirp4netns-0.4.3/.github/workflows/main.yaml   2019-12-18 
03:34:42.000000000 +0100
@@ -0,0 +1,24 @@
+name: Main
+on: [push, pull_request]
+jobs:
+  test-main:
+    runs-on: ubuntu-latest
+    steps:
+    - uses: actions/checkout@v1
+    - run: docker build -t slirp4netns-tests -f Dockerfile.tests .
+    - run: docker run --rm --privileged slirp4netns-tests
+  test-build:
+    runs-on: ubuntu-latest
+    steps:
+    - uses: actions/checkout@v1
+    - run: DOCKER_BUILDKIT=1 docker build -f Dockerfile.buildtests .
+  artifact:
+    runs-on: ubuntu-latest
+    steps:
+    - uses: actions/checkout@v1
+    - run: DOCKER_BUILDKIT=1 docker build -o /tmp/artifact --target artifact 
-f Dockerfile.buildtests .
+    - run: (cd /tmp/artifact; sha256sum *)
+    - uses: actions/upload-artifact@v1
+      with:
+        name: slirp4netns-x86_64
+        path: /tmp/artifact/slirp4netns
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/slirp4netns-0.4.2/.github/workflows/release.yaml 
new/slirp4netns-0.4.3/.github/workflows/release.yaml
--- old/slirp4netns-0.4.2/.github/workflows/release.yaml        1970-01-01 
01:00:00.000000000 +0100
+++ new/slirp4netns-0.4.3/.github/workflows/release.yaml        2019-12-18 
03:34:42.000000000 +0100
@@ -0,0 +1,29 @@
+name: Release
+on:
+  push:
+    tags:
+    - 'v*'
+
+jobs:
+  release:
+    runs-on: ubuntu-latest
+    steps:
+    - uses: actions/checkout@v1
+    - run: DOCKER_BUILDKIT=1 docker build -o /tmp/artifact --target artifact 
-f Dockerfile.buildtests .
+    - run: (cd /tmp/artifact; sha256sum *)
+    - uses: actions/create-release@v1
+      id: create_release
+      env:
+        GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
+      with:
+        tag_name: ${{ github.ref }}
+        release_name: ${{ github.ref }}
+        draft: true
+    - uses: actions/[email protected]
+      env:
+        GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
+      with:
+        upload_url: ${{ steps.create_release.outputs.upload_url }}
+        asset_path: /tmp/artifact/slirp4netns
+        asset_name: slirp4netns-x86_64
+        asset_content_type: application/octet-stream
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/slirp4netns-0.4.2/.travis.yml 
new/slirp4netns-0.4.3/.travis.yml
--- old/slirp4netns-0.4.2/.travis.yml   2019-10-18 15:04:32.000000000 +0200
+++ new/slirp4netns-0.4.3/.travis.yml   1970-01-01 01:00:00.000000000 +0100
@@ -1,10 +0,0 @@
-dist: trusty
-sudo: required
-
-services:
-  - docker
-
-script:
-  - docker build -t slirp4netns-tests -f Dockerfile.tests .
-  - docker run --security-opt seccomp="unconfined" --rm -v /dev:/dev 
slirp4netns-tests
-  - docker build -q -f Dockerfile.buildtests .
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/slirp4netns-0.4.2/Dockerfile.buildtests 
new/slirp4netns-0.4.3/Dockerfile.buildtests
--- old/slirp4netns-0.4.2/Dockerfile.buildtests 2019-10-18 15:04:32.000000000 
+0200
+++ new/slirp4netns-0.4.3/Dockerfile.buildtests 2019-12-18 03:34:42.000000000 
+0100
@@ -44,6 +44,10 @@
 FROM buildtest-opensuse151-common AS buildtest-opensuse151-dynamic
 RUN ./configure && make && cp -f slirp4netns /
 
+# artifact for GitHub actions
+FROM scratch AS artifact
+COPY --from=buildtest-alpine310-static /slirp4netns /slirp4netns
+
 FROM scratch AS buildtest-final-stage
 COPY --from=buildtest-alpine310-static /slirp4netns /buildtest-alpine310-static
 COPY --from=buildtest-ubuntu1804-dynamic /slirp4netns 
/buildtest-ubuntu1804-dynamic
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/slirp4netns-0.4.2/MAINTAINERS 
new/slirp4netns-0.4.3/MAINTAINERS
--- old/slirp4netns-0.4.2/MAINTAINERS   2019-10-18 15:04:32.000000000 +0200
+++ new/slirp4netns-0.4.3/MAINTAINERS   2019-12-18 03:34:42.000000000 +0100
@@ -2,8 +2,22 @@
 
 [Org]
 
-# Approvers (aka Core Maintainers) approve pull requests.
+# Approvers (aka Core Maintainers) approve pull requests and ship releases.
 # GitHub Team: rootless-containers/slirp4netns-approvers
+#
+# An approver may approve PRs and ship releases without waiting for LGTMs from 
other approvers.
+# However, the approver should try to get LGTMs from other approvers for 
significant changes.
+#
+# Release guide (since v0.4.3):
+# 1. Bump up the version string to `vX.Y.Z` (or `vX.Y.Z-beta.W`) in 
`configure.ac`.
+# 2. `git commit -a -s -m vX.Y.Z`
+# 3. Bump up the version string to `vX.Y.Z+dev` (or `vX.Y.Z-beta.W`+dev) in 
`configure.ac`.
+# 4. `git commit -a -s -m vX.Y.Z+dev`
+# 5. Open a PR and merge it.
+# 6. Create a tag `v.X.Y.Z` for the `vX.Y.Z` commit, and push the tag to the 
upstream: `git push upstream vX.Y.Z`
+# 7. GitHub Actions automatically ships a draft release with a statically 
compiled binary: https://github.com/rootless-containers/slirp4netns/releases
+#    If it fails, check the GitHub Actions log: 
https://github.com/rootless-containers/slirp4netns/actions?query=workflow%3ARelease
+# 8. Add release notes to the draft release and ship the release.
        [Org.Approvers]
                people = [
                        "akihirosuda",
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/slirp4netns-0.4.2/api.c new/slirp4netns-0.4.3/api.c
--- old/slirp4netns-0.4.2/api.c 2019-10-18 15:04:32.000000000 +0200
+++ new/slirp4netns-0.4.3/api.c 2019-12-18 03:34:42.000000000 +0100
@@ -21,6 +21,11 @@
     }
     memset(&addr, 0, sizeof(addr));
     addr.sun_family = AF_UNIX;
+    if (strlen(api_socket) >= sizeof(addr.sun_path)) {
+        fprintf(stderr, "the specified API socket path is too long (>= %lu)\n",
+                sizeof(addr.sun_path));
+        return -1;
+    }
     strncpy(addr.sun_path, api_socket, sizeof(addr.sun_path) - 1);
     if (bind(fd, (struct sockaddr *)&addr, sizeof(addr)) < 0) {
         perror("api_bindlisten: bind");
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/slirp4netns-0.4.2/configure.ac 
new/slirp4netns-0.4.3/configure.ac
--- old/slirp4netns-0.4.2/configure.ac  2019-10-18 15:04:32.000000000 +0200
+++ new/slirp4netns-0.4.3/configure.ac  2019-12-18 03:34:42.000000000 +0100
@@ -1,5 +1,5 @@
 AC_PREREQ([2.69])
-AC_INIT([slirp4netns], [0.4.2], 
[https://github.com/rootless-containers/slirp4netns/issues])
+AC_INIT([slirp4netns], [0.4.3], 
[https://github.com/rootless-containers/slirp4netns/issues])
 AC_CONFIG_SRCDIR([main.c])
 AC_CONFIG_HEADERS([config.h])
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/slirp4netns-0.4.2/sandbox.c 
new/slirp4netns-0.4.3/sandbox.c
--- old/slirp4netns-0.4.2/sandbox.c     2019-10-18 15:04:32.000000000 +0200
+++ new/slirp4netns-0.4.3/sandbox.c     2019-12-18 03:34:42.000000000 +0100
@@ -134,8 +134,8 @@
 
     ret = mount("tmpfs", "/", "tmpfs", MS_REMOUNT | MS_RDONLY, "size=0k");
     if (ret < 0) {
-        fprintf(stderr, "cannot mount tmpfs on /tmp\n");
-        return ret;
+        fprintf(stderr, "cannot remount / as read-only\n");
+        /* error is negligible (#163) */
     }
 
     ret = prctl(PR_SET_NO_NEW_PRIVS, 1, 0, 0, 0);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/slirp4netns-0.4.2/tests/test-slirp4netns-api-socket.sh 
new/slirp4netns-0.4.3/tests/test-slirp4netns-api-socket.sh
--- old/slirp4netns-0.4.2/tests/test-slirp4netns-api-socket.sh  2019-10-18 
15:04:32.000000000 +0200
+++ new/slirp4netns-0.4.3/tests/test-slirp4netns-api-socket.sh  2019-12-18 
03:34:42.000000000 +0100
@@ -10,6 +10,15 @@
 
 tmpdir=$(mktemp -d /tmp/slirp4netns-bench.XXXXXXXXXX)
 apisocket=${tmpdir}/slirp4netns.sock
+apisocketlongpath=${tmpdir}/slirp4netns-TOO-LONG-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA.sock
+
+if slirp4netns -c $child --api-socket $apisocketlongpath tun11; then
+    echo "expected failure with apisocket path too long" >&2
+    kill -9 $child
+    rm -rf $tmpdir
+    exit 1
+fi
+
 slirp4netns -c $child --api-socket $apisocket tun11 &
 slirp_pid=$!
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/slirp4netns-0.4.2/vendor/README.md 
new/slirp4netns-0.4.3/vendor/README.md
--- old/slirp4netns-0.4.2/vendor/README.md      2019-10-18 15:04:32.000000000 
+0200
+++ new/slirp4netns-0.4.3/vendor/README.md      2019-12-18 03:34:42.000000000 
+0100
@@ -1,7 +1,7 @@
 # DO NOT EDIT MANUALLY
 
 Vendored components:
-* libslirp: https://gitlab.freedesktop.org/slirp/libslirp.git 
(`d203c81bc6c861e1671122c3194c21d1a6763641`)
+* libslirp: https://gitlab.freedesktop.org/slirp/libslirp.git 
(`6651ba26c4e94f64d6448a2db4991269ce553bd9`)
 * parson: https://github.com/kgabis/parson.git 
(`c5bb9557fe98367aa8e041c65863909f12ee76b2`)
 
 Please do not edit the contents under this directory manually.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/slirp4netns-0.4.2/vendor/libslirp/src/arp_table.c 
new/slirp4netns-0.4.3/vendor/libslirp/src/arp_table.c
--- old/slirp4netns-0.4.2/vendor/libslirp/src/arp_table.c       2019-10-18 
15:04:32.000000000 +0200
+++ new/slirp4netns-0.4.3/vendor/libslirp/src/arp_table.c       2019-12-18 
03:34:42.000000000 +0100
@@ -71,7 +71,7 @@
     DEBUG_ARG("ip = %s", inet_ntoa((struct in_addr){ .s_addr = ip_addr }));
 
     /* If broadcast address */
-    if (ip_addr == 0xffffffff || ip_addr == broadcast_addr) {
+    if (ip_addr == 0 || ip_addr == 0xffffffff || ip_addr == broadcast_addr) {
         /* return Ethernet broadcast address */
         memset(out_ethaddr, 0xff, ETH_ALEN);
         return 1;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/slirp4netns-0.4.2/vendor/libslirp/src/dnssearch.c 
new/slirp4netns-0.4.3/vendor/libslirp/src/dnssearch.c
--- old/slirp4netns-0.4.2/vendor/libslirp/src/dnssearch.c       2019-10-18 
15:04:32.000000000 +0200
+++ new/slirp4netns-0.4.3/vendor/libslirp/src/dnssearch.c       2019-12-18 
03:34:42.000000000 +0100
@@ -238,13 +238,8 @@
     size_t i, num_domains, memreq = 0;
     uint8_t *result = NULL, *outptr;
     CompactDomain *domains = NULL;
-    const char **nameptr = names;
 
-    while (*nameptr != NULL) {
-        nameptr++;
-    }
-
-    num_domains = nameptr - names;
+    num_domains = g_strv_length((GStrv)names);
     if (num_domains == 0) {
         return -2;
     }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/slirp4netns-0.4.2/vendor/libslirp/src/libslirp-version.h 
new/slirp4netns-0.4.3/vendor/libslirp/src/libslirp-version.h
--- old/slirp4netns-0.4.2/vendor/libslirp/src/libslirp-version.h        
2019-10-18 15:04:32.000000000 +0200
+++ new/slirp4netns-0.4.3/vendor/libslirp/src/libslirp-version.h        
2019-12-18 03:34:42.000000000 +0100
@@ -7,7 +7,7 @@
 #endif
 
 #define SLIRP_MAJOR_VERSION 4
-#define SLIRP_MINOR_VERSION 0
+#define SLIRP_MINOR_VERSION 1
 #define SLIRP_MICRO_VERSION 0
 
 #define SLIRP_CHECK_VERSION(major,minor,micro)                          \
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/slirp4netns-0.4.2/vendor/libslirp/src/misc.c 
new/slirp4netns-0.4.3/vendor/libslirp/src/misc.c
--- old/slirp4netns-0.4.2/vendor/libslirp/src/misc.c    2019-10-18 
15:04:32.000000000 +0200
+++ new/slirp4netns-0.4.3/vendor/libslirp/src/misc.c    2019-12-18 
03:34:42.000000000 +0100
@@ -168,7 +168,8 @@
 int fork_exec(struct socket *so, const char *ex)
 {
     GError *err = NULL;
-    char **argv;
+    gint argc = 0;
+    gchar **argv = NULL;
     int opt, sp[2];
 
     DEBUG_CALL("fork_exec");
@@ -179,7 +180,12 @@
         return 0;
     }
 
-    argv = g_strsplit(ex, " ", -1);
+    if (!g_shell_parse_argv(ex, &argc, &argv, &err)) {
+        g_critical("fork_exec invalid command: %s\nerror: %s", ex, 
err->message);
+        g_error_free(err);
+        return 0;
+    }
+
     g_spawn_async_with_fds(NULL /* cwd */, argv, NULL /* env */,
                            G_SPAWN_SEARCH_PATH, fork_exec_child_setup,
                            NULL /* data */, NULL /* child_pid */, sp[1], sp[1],
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/slirp4netns-0.4.2/vendor/libslirp/src/sbuf.c 
new/slirp4netns-0.4.3/vendor/libslirp/src/sbuf.c
--- old/slirp4netns-0.4.2/vendor/libslirp/src/sbuf.c    2019-10-18 
15:04:32.000000000 +0200
+++ new/slirp4netns-0.4.3/vendor/libslirp/src/sbuf.c    2019-12-18 
03:34:42.000000000 +0100
@@ -9,19 +9,17 @@
 
 void sbfree(struct sbuf *sb)
 {
-    free(sb->sb_data);
+    g_free(sb->sb_data);
 }
 
-bool sbdrop(struct sbuf *sb, int num)
+bool sbdrop(struct sbuf *sb, size_t num)
 {
     int limit = sb->sb_datalen / 2;
 
-    /*
-     * We can only drop how much we have
-     * This should never succeed
-     */
+    g_warn_if_fail(num <= sb->sb_cc);
     if (num > sb->sb_cc)
         num = sb->sb_cc;
+
     sb->sb_cc -= num;
     sb->sb_rptr += num;
     if (sb->sb_rptr >= sb->sb_data + sb->sb_datalen)
@@ -34,27 +32,11 @@
     return false;
 }
 
-void sbreserve(struct sbuf *sb, int size)
+void sbreserve(struct sbuf *sb, size_t size)
 {
-    if (sb->sb_data) {
-        /* Already alloced, realloc if necessary */
-        if (sb->sb_datalen != size) {
-            sb->sb_wptr = sb->sb_rptr = sb->sb_data =
-                (char *)realloc(sb->sb_data, size);
-            sb->sb_cc = 0;
-            if (sb->sb_wptr)
-                sb->sb_datalen = size;
-            else
-                sb->sb_datalen = 0;
-        }
-    } else {
-        sb->sb_wptr = sb->sb_rptr = sb->sb_data = (char *)malloc(size);
-        sb->sb_cc = 0;
-        if (sb->sb_wptr)
-            sb->sb_datalen = size;
-        else
-            sb->sb_datalen = 0;
-    }
+    sb->sb_wptr = sb->sb_rptr = sb->sb_data = g_realloc(sb->sb_data, size);
+    sb->sb_cc = 0;
+    sb->sb_datalen = size;
 }
 
 /*
@@ -161,17 +143,17 @@
  * Don't update the sbuf rptr, this will be
  * done in sbdrop when the data is acked
  */
-void sbcopy(struct sbuf *sb, int off, int len, char *to)
+void sbcopy(struct sbuf *sb, size_t off, size_t len, char *to)
 {
     char *from;
 
+    g_assert(len + off <= sb->sb_cc);
+
     from = sb->sb_rptr + off;
     if (from >= sb->sb_data + sb->sb_datalen)
         from -= sb->sb_datalen;
 
     if (from < sb->sb_wptr) {
-        if (len > sb->sb_cc)
-            len = sb->sb_cc;
         memcpy(to, from, len);
     } else {
         /* re-use off */
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/slirp4netns-0.4.2/vendor/libslirp/src/sbuf.h 
new/slirp4netns-0.4.3/vendor/libslirp/src/sbuf.h
--- old/slirp4netns-0.4.2/vendor/libslirp/src/sbuf.h    2019-10-18 
15:04:32.000000000 +0200
+++ new/slirp4netns-0.4.3/vendor/libslirp/src/sbuf.h    2019-12-18 
03:34:42.000000000 +0100
@@ -18,10 +18,10 @@
     char *sb_data; /* Actual data */
 };
 
-void sbfree(struct sbuf *);
-bool sbdrop(struct sbuf *, int);
-void sbreserve(struct sbuf *, int);
-void sbappend(struct socket *, struct mbuf *);
-void sbcopy(struct sbuf *, int, int, char *);
+void sbfree(struct sbuf *sb);
+bool sbdrop(struct sbuf *sb, size_t len);
+void sbreserve(struct sbuf *sb, size_t size);
+void sbappend(struct socket *sb, struct mbuf *mb);
+void sbcopy(struct sbuf *sb, size_t off, size_t len, char *p);
 
 #endif
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/slirp4netns-0.4.2/vendor/libslirp/src/slirp.c 
new/slirp4netns-0.4.3/vendor/libslirp/src/slirp.c
--- old/slirp4netns-0.4.2/vendor/libslirp/src/slirp.c   2019-10-18 
15:04:32.000000000 +0200
+++ new/slirp4netns-0.4.3/vendor/libslirp/src/slirp.c   2019-12-18 
03:34:42.000000000 +0100
@@ -845,11 +845,6 @@
 {
     const struct ip *iph = (const struct ip *)ifm->m_data;
 
-    if (iph->ip_dst.s_addr == 0) {
-        /* 0.0.0.0 can not be a destination address, something went wrong,
-         * avoid making it worse */
-        return 1;
-    }
     if (!arp_table_search(slirp, iph->ip_dst.s_addr, ethaddr)) {
         uint8_t arp_req[ETH_HLEN + sizeof(struct slirp_arphdr)];
         struct ethhdr *reh = (struct ethhdr *)arp_req;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/slirp4netns-0.4.2/vendor/libslirp/src/slirp.h 
new/slirp4netns-0.4.3/vendor/libslirp/src/slirp.h
--- old/slirp4netns-0.4.2/vendor/libslirp/src/slirp.h   2019-10-18 
15:04:32.000000000 +0200
+++ new/slirp4netns-0.4.3/vendor/libslirp/src/slirp.h   2019-12-18 
03:34:42.000000000 +0100
@@ -266,7 +266,7 @@
 void tcp_sockclosed(struct tcpcb *);
 int tcp_fconnect(struct socket *, unsigned short af);
 void tcp_connect(struct socket *);
-int tcp_attach(struct socket *);
+void tcp_attach(struct socket *);
 uint8_t tcp_tos(struct socket *);
 int tcp_emu(struct socket *, struct mbuf *);
 int tcp_ctl(struct socket *);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/slirp4netns-0.4.2/vendor/libslirp/src/socket.c 
new/slirp4netns-0.4.3/vendor/libslirp/src/socket.c
--- old/slirp4netns-0.4.2/vendor/libslirp/src/socket.c  2019-10-18 
15:04:32.000000000 +0200
+++ new/slirp4netns-0.4.3/vendor/libslirp/src/socket.c  2019-12-18 
03:34:42.000000000 +0100
@@ -95,7 +95,7 @@
         remque(so); /* crashes if so is not in a queue */
 
     if (so->so_tcpcb) {
-        free(so->so_tcpcb);
+        g_free(so->so_tcpcb);
     }
     g_free(so);
 }
@@ -195,7 +195,9 @@
 
             err = errno;
             if (nn == 0) {
-                if (getpeername(so->s, paddr, &alen) < 0) {
+                int shutdown_wr = so->so_state & SS_FCANTSENDMORE;
+
+                if (!shutdown_wr && getpeername(so->s, paddr, &alen) < 0) {
                     err = errno;
                 } else {
                     getsockopt(so->s, SOL_SOCKET, SO_ERROR, &err, &elen);
@@ -844,6 +846,9 @@
             } else {
                 sin->sin_addr = loopback_addr;
             }
+        } else if (!slirp->disable_host_loopback && so->so_faddr.s_addr == 
0xffffffff) {
+            /* Receive broadcast as well */
+            sin->sin_addr = loopback_addr;
         }
         break;
     case AF_INET6:
@@ -863,6 +868,9 @@
             } else {
                 sin6->sin6_addr = in6addr_loopback;
             }
+        } else if (!slirp->disable_host_loopback
+                   && in6_equal(&so->so_faddr6, &(struct in6_addr) 
ALLNODES_MULTICAST)) {
+            sin6->sin6_addr = in6addr_loopback;
         }
         break;
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/slirp4netns-0.4.2/vendor/libslirp/src/state.c 
new/slirp4netns-0.4.3/vendor/libslirp/src/state.c
--- old/slirp4netns-0.4.2/vendor/libslirp/src/state.c   2019-10-18 
15:04:32.000000000 +0200
+++ new/slirp4netns-0.4.3/vendor/libslirp/src/state.c   2019-12-18 
03:34:42.000000000 +0100
@@ -107,9 +107,6 @@
     /* Allocate the buffer space used by the field after the tmp */
     sbreserve(tmp->parent, tmp->parent->sb_datalen);
 
-    if (tmp->parent->sb_datalen != requested_len) {
-        return -ENOMEM;
-    }
     if (tmp->woff >= requested_len || tmp->roff >= requested_len) {
         g_critical("invalid sbuf offsets r/w=%u/%u len=%u", tmp->roff,
                    tmp->woff, requested_len);
@@ -159,9 +156,8 @@
 static int slirp_socket_pre_load(void *opaque)
 {
     struct socket *so = opaque;
-    if (tcp_attach(so) < 0) {
-        return -ENOMEM;
-    }
+
+    tcp_attach(so);
     /* Older versions don't load these fields */
     so->so_ffamily = AF_INET;
     so->so_lfamily = AF_INET;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/slirp4netns-0.4.2/vendor/libslirp/src/tcp_input.c 
new/slirp4netns-0.4.3/vendor/libslirp/src/tcp_input.c
--- old/slirp4netns-0.4.2/vendor/libslirp/src/tcp_input.c       2019-10-18 
15:04:32.000000000 +0200
+++ new/slirp4netns-0.4.3/vendor/libslirp/src/tcp_input.c       2019-12-18 
03:34:42.000000000 +0100
@@ -408,10 +408,7 @@
             goto dropwithreset;
 
         so = socreate(slirp);
-        if (tcp_attach(so) < 0) {
-            g_free(so); /* Not sofree (if it failed, it's not insqued) */
-            goto dropwithreset;
-        }
+        tcp_attach(so);
 
         sbreserve(&so->so_snd, TCP_SNDSPACE);
         sbreserve(&so->so_rcv, TCP_RCVSPACE);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/slirp4netns-0.4.2/vendor/libslirp/src/tcp_subr.c 
new/slirp4netns-0.4.3/vendor/libslirp/src/tcp_subr.c
--- old/slirp4netns-0.4.2/vendor/libslirp/src/tcp_subr.c        2019-10-18 
15:04:32.000000000 +0200
+++ new/slirp4netns-0.4.3/vendor/libslirp/src/tcp_subr.c        2019-12-18 
03:34:42.000000000 +0100
@@ -255,11 +255,7 @@
 {
     register struct tcpcb *tp;
 
-    tp = (struct tcpcb *)malloc(sizeof(*tp));
-    if (tp == NULL)
-        return ((struct tcpcb *)0);
-
-    memset((char *)tp, 0, sizeof(struct tcpcb));
+    tp = g_new0(struct tcpcb, 1);
     tp->seg_next = tp->seg_prev = (struct tcpiphdr *)tp;
     /*
      * 40: length of IPv4 header (20) + TCP header (20)
@@ -336,7 +332,7 @@
         remque(tcpiphdr2qlink(tcpiphdr_prev(t)));
         m_free(m);
     }
-    free(tp);
+    g_free(tp);
     so->so_tcpcb = NULL;
     /* clobber input socket cache if we're closing the cached connection */
     if (so == slirp->tcp_last_so)
@@ -377,8 +373,8 @@
     case TCPS_LISTEN:
     case TCPS_SYN_SENT:
         tp->t_state = TCPS_CLOSED;
-        tp = tcp_close(tp);
-        break;
+        tcp_close(tp);
+        return;
 
     case TCPS_SYN_RECEIVED:
     case TCPS_ESTABLISHED:
@@ -474,10 +470,7 @@
         so = inso;
     } else {
         so = socreate(slirp);
-        if (tcp_attach(so) < 0) {
-            g_free(so); /* NOT sofree */
-            return;
-        }
+        tcp_attach(so);
         so->lhost = inso->lhost;
         so->so_ffamily = inso->so_ffamily;
     }
@@ -528,14 +521,10 @@
 /*
  * Attach a TCPCB to a socket.
  */
-int tcp_attach(struct socket *so)
+void tcp_attach(struct socket *so)
 {
-    if ((so->so_tcpcb = tcp_newtcpcb(so)) == NULL)
-        return -1;
-
+    so->so_tcpcb = tcp_newtcpcb(so);
     insque(so, &so->slirp->tcb);
-
-    return 0;
 }
 
 /*
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/slirp4netns-0.4.2/vendor/libslirp/src/vmstate.c 
new/slirp4netns-0.4.3/vendor/libslirp/src/vmstate.c
--- old/slirp4netns-0.4.2/vendor/libslirp/src/vmstate.c 2019-10-18 
15:04:32.000000000 +0200
+++ new/slirp4netns-0.4.3/vendor/libslirp/src/vmstate.c 2019-12-18 
03:34:42.000000000 +0100
@@ -321,7 +321,6 @@
             }
             for (i = 0; i < n_elems; i++) {
                 void *curr_elem = first_elem + size * i;
-                ret = 0;
 
                 if (field->flags & VMS_ARRAY_OF_POINTER) {
                     assert(curr_elem);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/slirp4netns-0.4.2/vendor.sh 
new/slirp4netns-0.4.3/vendor.sh
--- old/slirp4netns-0.4.2/vendor.sh     2019-10-18 15:04:32.000000000 +0200
+++ new/slirp4netns-0.4.3/vendor.sh     2019-12-18 03:34:42.000000000 +0100
@@ -1,7 +1,7 @@
 #!/bin/bash
 set -eux -o pipefail
-# Aug 26, 2019
-LIBSLIRP_COMMIT=d203c81bc6c861e1671122c3194c21d1a6763641
+# Dec 4, 2019 (v4.1.0)
+LIBSLIRP_COMMIT=6651ba26c4e94f64d6448a2db4991269ce553bd9
 LIBSLIRP_REPO=https://gitlab.freedesktop.org/slirp/libslirp.git
 
 # Jul 12, 2019


Reply via email to