diff options
author | Laurent Bercot <ska-skaware@skarnet.org> | 2016-01-07 00:17:50 +0000 |
---|---|---|
committer | Laurent Bercot <ska-skaware@skarnet.org> | 2016-01-07 00:17:50 +0000 |
commit | bb97405b8709827702891e50b1f4775842f2b48c (patch) | |
tree | 186f828e0ec1cf139a579571dc0226802399413a | |
parent | 928bea7eec8bcfe1abbf8ac2fe01a65fe31a9ed0 (diff) | |
download | s6-bb97405b8709827702891e50b1f4775842f2b48c.tar.xz |
- fix stupid, stupid s6-ftrigrd crash (thx jjk)
- rc for 2.2.4.3
-rw-r--r-- | INSTALL | 2 | ||||
-rw-r--r-- | doc/index.html | 4 | ||||
-rw-r--r-- | doc/upgrade.html | 6 | ||||
-rw-r--r-- | package/info | 2 | ||||
-rw-r--r-- | src/libs6/s6-ftrigrd.c | 22 |
5 files changed, 20 insertions, 16 deletions
@@ -6,7 +6,7 @@ Build Instructions - A POSIX-compliant C development environment - GNU make version 3.81 or later - - skalibs version 2.3.8.3 or later: http://skarnet.org/software/skalibs/ + - skalibs version 2.3.9.0 or later: http://skarnet.org/software/skalibs/ - execline version 2.1.4.5 or later: http://skarnet.org/software/execline/ This software will run on any operating system that implements diff --git a/doc/index.html b/doc/index.html index 08b4b42..dbc2cb0 100644 --- a/doc/index.html +++ b/doc/index.html @@ -83,7 +83,7 @@ with s6</a> </li> <li> A POSIX-compliant system with a standard C development environment </li> <li> GNU make, version 3.81 or later </li> <li> <a href="http://skarnet.org/software/skalibs/">skalibs</a> version -2.3.8.3 or later. It's a build-time requirement. It's also a run-time +2.3.9.0 or later. It's a build-time requirement. It's also a run-time requirement if you link against the shared version of the skalibs library. </li> <li> <a href="http://skarnet.org/software/execline/">execline</a> version @@ -100,7 +100,7 @@ library. </li> <h3> Download </h3> <ul> - <li> The current released version of s6 is <a href="s6-2.2.4.2.tar.gz">2.2.4.2</a>. </li> + <li> The current released version of s6 is <a href="s6-2.2.4.3.tar.gz">2.2.4.3</a>. </li> <li> Alternatively, you can checkout a copy of the s6 git repository: <pre> git clone git://git.skarnet.org/s6 </pre> </li> <li> There's also a diff --git a/doc/upgrade.html b/doc/upgrade.html index c70da21..fb8a875 100644 --- a/doc/upgrade.html +++ b/doc/upgrade.html @@ -18,6 +18,12 @@ <h1> What has changed in s6 </h1> +<h2> in 2.2.4.3 </h2> + +<ul> + <li> skalibs dependency bumped to 2.3.9.0. </li> +</ul> + <h2> in 2.2.4.2 </h2> <ul> diff --git a/package/info b/package/info index c2a8d18..327bade 100644 --- a/package/info +++ b/package/info @@ -1,4 +1,4 @@ package=s6 -version=2.2.4.2 +version=2.2.4.3 category=admin package_macro_name=S6 diff --git a/src/libs6/s6-ftrigrd.c b/src/libs6/s6-ftrigrd.c index 7a32662..e0bc704 100644 --- a/src/libs6/s6-ftrigrd.c +++ b/src/libs6/s6-ftrigrd.c @@ -39,7 +39,6 @@ struct ftrigio_s uint16 id ; /* given by client */ } ; #define FTRIGIO_ZERO { .xindex = 0, .trig = FTRIG1_ZERO, .b = BUFFER_INIT(0, -1, 0, 0), .buf = "", .sa = STRALLOC_ZERO, .options = 0, .id = 0 } -static ftrigio_t const ftrigio_zero = FTRIGIO_ZERO ; static ftrigio_t a[FTRIGR_MAX] ; static unsigned int n = 0 ; @@ -49,7 +48,6 @@ static void ftrigio_deepfree (ftrigio_t *p) ftrig1_free(&p->trig) ; stralloc_free(&p->sa) ; regfree(&p->re) ; - *p = ftrigio_zero ; } static void cleanup (void) @@ -130,8 +128,12 @@ static int parse_protocol (unixmessage_t const *m, void *context) { register unsigned int i = 0 ; for (; i < n ; i++) if (a[i].id == id) break ; - if (i < n) remove(i) ; - answer(0) ; + if (i < n) + { + remove(i) ; + answer(0) ; + } + else answer(EINVAL) ; break ; } case 'L' : /* subscribe to path and match re */ @@ -156,8 +158,6 @@ static int parse_protocol (unixmessage_t const *m, void *context) answer(ENFILE) ; break ; } - a[n].options = options ; - a[n].id = id ; r = regcomp(&a[n].re, m->s + 16 + pathlen, REG_EXTENDED) ; if (r) { @@ -170,12 +170,10 @@ static int parse_protocol (unixmessage_t const *m, void *context) answer(errno) ; break ; } - if (!buffer_init(&a[n].b, &buffer_read, a[n].trig.fd, a[n].buf, FTRIGRD_BUFSIZE)) - { - ftrigio_deepfree(a + n) ; - answer(errno) ; - break ; - } + buffer_init(&a[n].b, &buffer_read, a[n].trig.fd, a[n].buf, FTRIGRD_BUFSIZE) ; + a[n].options = options ; + a[n].id = id ; + a[n].sa = stralloc_zero ; n++ ; answer(0) ; break ; |