netfilter-devel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH ulogd2 v3 0/2] pcap: prevent crashes when output `FILE *` is null
@ 2023-03-16 11:07 Jeremy Sowden
  2023-03-16 11:07 ` [PATCH ulogd2 v3 1/2] pcap: simplify opening of output file Jeremy Sowden
                   ` (3 more replies)
  0 siblings, 4 replies; 10+ messages in thread
From: Jeremy Sowden @ 2023-03-16 11:07 UTC (permalink / raw)
  To: Netfilter Devel

If ulogd2 receives a signal it will attempt to re-open the pcap output
file.  If this fails (because the permissions or ownership have changed
for example), the FILE pointer will be null and when the next packet
comes in, the null pointer will be passed to fwrite and ulogd will
crash.

The first patch simplifies the logic of the code that opens the output
file, and the second avoids closing the existing stream if `fopen`
fails.

Link: https://bugs.launchpad.net/ubuntu/+source/ulogd2/+bug/1429778

Change since v2

 * The first patch is new.
 * In the second patch, just keep the old stream open, rather than
   disabling output and trying to reopen at intervals.

Change since v1

 * Correct subject-prefix.

Jeremy Sowden (2):
  pcap: simplify opening of output file
  pcap: prevent crashes when output `FILE *` is null

 output/pcap/ulogd_output_PCAP.c | 50 +++++++++++++--------------------
 1 file changed, 19 insertions(+), 31 deletions(-)

-- 
2.39.2


^ permalink raw reply	[flat|nested] 10+ messages in thread

* [PATCH ulogd2 v3 1/2] pcap: simplify opening of output file
  2023-03-16 11:07 [PATCH ulogd2 v3 0/2] pcap: prevent crashes when output `FILE *` is null Jeremy Sowden
@ 2023-03-16 11:07 ` Jeremy Sowden
  2023-03-16 11:24   ` Florian Westphal
  2023-03-16 19:02   ` Pablo Neira Ayuso
  2023-03-16 11:07 ` [PATCH ulogd2 v3 2/2] pcap: prevent crashes when output `FILE *` is null Jeremy Sowden
                   ` (2 subsequent siblings)
  3 siblings, 2 replies; 10+ messages in thread
From: Jeremy Sowden @ 2023-03-16 11:07 UTC (permalink / raw)
  To: Netfilter Devel

Instead of statting the file, and choosing the mode with which to open
it and whether to write the PCAP header based on the result, always open
it with mode "a" and _then_ stat it.  This simplifies the flow-control
and avoids a race between statting and opening.

Signed-off-by: Jeremy Sowden <jeremy@azazel.net>
---
 output/pcap/ulogd_output_PCAP.c | 42 ++++++++++++---------------------
 1 file changed, 15 insertions(+), 27 deletions(-)

diff --git a/output/pcap/ulogd_output_PCAP.c b/output/pcap/ulogd_output_PCAP.c
index e7798f20c8fc..220fc6dec5fe 100644
--- a/output/pcap/ulogd_output_PCAP.c
+++ b/output/pcap/ulogd_output_PCAP.c
@@ -220,33 +220,21 @@ static int append_create_outfile(struct ulogd_pluginstance *upi)
 {
 	struct pcap_instance *pi = (struct pcap_instance *) &upi->private;
 	char *filename = upi->config_kset->ces[0].u.string;
-	struct stat st_dummy;
-	int exist = 0;
-
-	if (stat(filename, &st_dummy) == 0 && st_dummy.st_size > 0)
-		exist = 1;
-
-	if (!exist) {
-		pi->of = fopen(filename, "w");
-		if (!pi->of) {
-			ulogd_log(ULOGD_ERROR, "can't open pcap file %s: %s\n",
-				  filename,
-				  strerror(errno));
-			return -EPERM;
-		}
-		if (!write_pcap_header(pi)) {
-			ulogd_log(ULOGD_ERROR, "can't write pcap header: %s\n",
-				  strerror(errno));
-			return -ENOSPC;
-		}
-	} else {
-		pi->of = fopen(filename, "a");
-		if (!pi->of) {
-			ulogd_log(ULOGD_ERROR, "can't open pcap file %s: %s\n", 
-				filename,
-				strerror(errno));
-			return -EPERM;
-		}		
+	struct stat st_of;
+
+	pi->of = fopen(filename, "a");
+	if (!pi->of) {
+		ulogd_log(ULOGD_ERROR, "can't open pcap file %s: %s\n",
+			  filename,
+			  strerror(errno));
+		return -EPERM;
+	}
+	if (fstat(fileno(pi->of), &st_of) == 0 && st_of.st_size == 0) {
+	    if (!write_pcap_header(pi)) {
+		    ulogd_log(ULOGD_ERROR, "can't write pcap header: %s\n",
+			      strerror(errno));
+		    return -ENOSPC;
+	    }
 	}
 
 	return 0;
-- 
2.39.2


^ permalink raw reply related	[flat|nested] 10+ messages in thread

* [PATCH ulogd2 v3 2/2] pcap: prevent crashes when output `FILE *` is null
  2023-03-16 11:07 [PATCH ulogd2 v3 0/2] pcap: prevent crashes when output `FILE *` is null Jeremy Sowden
  2023-03-16 11:07 ` [PATCH ulogd2 v3 1/2] pcap: simplify opening of output file Jeremy Sowden
@ 2023-03-16 11:07 ` Jeremy Sowden
  2023-03-16 11:36 ` [PATCH ulogd2 v3 0/2] " Florian Westphal
  2023-03-16 23:36 ` Florian Westphal
  3 siblings, 0 replies; 10+ messages in thread
From: Jeremy Sowden @ 2023-03-16 11:07 UTC (permalink / raw)
  To: Netfilter Devel

If ulogd2 receives a signal it will attempt to re-open the pcap output
file.  If this fails (because the permissions or ownership have changed
for example), the FILE pointer will be null and when the next packet
comes in, the null pointer will be passed to fwrite and ulogd will
crash.

Instead, assign the return value of `fopen` to a local variable, and
only close the existing stream if `fopen` succeeded.

Link: https://bugs.launchpad.net/ubuntu/+source/ulogd2/+bug/1429778
Signed-off-by: Jeremy Sowden <jeremy@azazel.net>
---
 output/pcap/ulogd_output_PCAP.c | 12 ++++++------
 1 file changed, 6 insertions(+), 6 deletions(-)

diff --git a/output/pcap/ulogd_output_PCAP.c b/output/pcap/ulogd_output_PCAP.c
index 220fc6dec5fe..0bb1f32b53ed 100644
--- a/output/pcap/ulogd_output_PCAP.c
+++ b/output/pcap/ulogd_output_PCAP.c
@@ -221,14 +221,18 @@ static int append_create_outfile(struct ulogd_pluginstance *upi)
 	struct pcap_instance *pi = (struct pcap_instance *) &upi->private;
 	char *filename = upi->config_kset->ces[0].u.string;
 	struct stat st_of;
+	FILE *of;
 
-	pi->of = fopen(filename, "a");
-	if (!pi->of) {
+	of = fopen(filename, "a");
+	if (!of) {
 		ulogd_log(ULOGD_ERROR, "can't open pcap file %s: %s\n",
 			  filename,
 			  strerror(errno));
 		return -EPERM;
 	}
+	if (pi->of)
+		fclose(pi->of);
+	pi->of = of;
 	if (fstat(fileno(pi->of), &st_of) == 0 && st_of.st_size == 0) {
 	    if (!write_pcap_header(pi)) {
 		    ulogd_log(ULOGD_ERROR, "can't write pcap header: %s\n",
@@ -236,18 +240,14 @@ static int append_create_outfile(struct ulogd_pluginstance *upi)
 		    return -ENOSPC;
 	    }
 	}
-
 	return 0;
 }
 
 static void signal_pcap(struct ulogd_pluginstance *upi, int signal)
 {
-	struct pcap_instance *pi = (struct pcap_instance *) &upi->private;
-
 	switch (signal) {
 	case SIGHUP:
 		ulogd_log(ULOGD_NOTICE, "reopening capture file\n");
-		fclose(pi->of);
 		append_create_outfile(upi);
 		break;
 	default:
-- 
2.39.2


^ permalink raw reply related	[flat|nested] 10+ messages in thread

* Re: [PATCH ulogd2 v3 1/2] pcap: simplify opening of output file
  2023-03-16 11:07 ` [PATCH ulogd2 v3 1/2] pcap: simplify opening of output file Jeremy Sowden
@ 2023-03-16 11:24   ` Florian Westphal
  2023-03-16 11:32     ` Florian Westphal
  2023-03-16 19:02   ` Pablo Neira Ayuso
  1 sibling, 1 reply; 10+ messages in thread
From: Florian Westphal @ 2023-03-16 11:24 UTC (permalink / raw)
  To: Jeremy Sowden; +Cc: Netfilter Devel

Jeremy Sowden <jeremy@azazel.net> wrote:
> Instead of statting the file, and choosing the mode with which to open
> it and whether to write the PCAP header based on the result, always open
> it with mode "a" and _then_ stat it.  This simplifies the flow-control
> and avoids a race between statting and opening.
> 
> Signed-off-by: Jeremy Sowden <jeremy@azazel.net>
> ---
>  output/pcap/ulogd_output_PCAP.c | 42 ++++++++++++---------------------
>  1 file changed, 15 insertions(+), 27 deletions(-)
> 
> diff --git a/output/pcap/ulogd_output_PCAP.c b/output/pcap/ulogd_output_PCAP.c
> index e7798f20c8fc..220fc6dec5fe 100644
> --- a/output/pcap/ulogd_output_PCAP.c
> +++ b/output/pcap/ulogd_output_PCAP.c
> @@ -220,33 +220,21 @@ static int append_create_outfile(struct ulogd_pluginstance *upi)
>  {

> +	struct stat st_of;
> +
> +	pi->of = fopen(filename, "a");
> +	if (!pi->of) {
> +		ulogd_log(ULOGD_ERROR, "can't open pcap file %s: %s\n",
> +			  filename,
> +			  strerror(errno));
> +		return -EPERM;
> +	}
> +	if (fstat(fileno(pi->of), &st_of) == 0 && st_of.st_size == 0) {
> +	    if (!write_pcap_header(pi)) {
> +		    ulogd_log(ULOGD_ERROR, "can't write pcap header: %s\n",
> +			      strerror(errno));
> +		    return -ENOSPC;

LGTM, but should that fclose() before -ENOSPC?

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [PATCH ulogd2 v3 1/2] pcap: simplify opening of output file
  2023-03-16 11:24   ` Florian Westphal
@ 2023-03-16 11:32     ` Florian Westphal
  0 siblings, 0 replies; 10+ messages in thread
From: Florian Westphal @ 2023-03-16 11:32 UTC (permalink / raw)
  To: Florian Westphal; +Cc: Jeremy Sowden, Netfilter Devel

Florian Westphal <fw@strlen.de> wrote:
> Jeremy Sowden <jeremy@azazel.net> wrote:
> > Instead of statting the file, and choosing the mode with which to open
> > it and whether to write the PCAP header based on the result, always open
> > it with mode "a" and _then_ stat it.  This simplifies the flow-control
> > and avoids a race between statting and opening.
> > 
> > Signed-off-by: Jeremy Sowden <jeremy@azazel.net>
> > ---
> >  output/pcap/ulogd_output_PCAP.c | 42 ++++++++++++---------------------
> >  1 file changed, 15 insertions(+), 27 deletions(-)
> > 
> > diff --git a/output/pcap/ulogd_output_PCAP.c b/output/pcap/ulogd_output_PCAP.c
> > index e7798f20c8fc..220fc6dec5fe 100644
> > --- a/output/pcap/ulogd_output_PCAP.c
> > +++ b/output/pcap/ulogd_output_PCAP.c
> > @@ -220,33 +220,21 @@ static int append_create_outfile(struct ulogd_pluginstance *upi)
> >  {
> 
> > +	struct stat st_of;
> > +
> > +	pi->of = fopen(filename, "a");
> > +	if (!pi->of) {
> > +		ulogd_log(ULOGD_ERROR, "can't open pcap file %s: %s\n",
> > +			  filename,
> > +			  strerror(errno));
> > +		return -EPERM;
> > +	}
> > +	if (fstat(fileno(pi->of), &st_of) == 0 && st_of.st_size == 0) {
> > +	    if (!write_pcap_header(pi)) {
> > +		    ulogd_log(ULOGD_ERROR, "can't write pcap header: %s\n",
> > +			      strerror(errno));
> > +		    return -ENOSPC;
> 
> LGTM, but should that fclose() before -ENOSPC?

AFAICS this doesn't really matter, ulogd will exit().

SIGHUP case doesn't handle errors.

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [PATCH ulogd2 v3 0/2] pcap: prevent crashes when output `FILE *` is null
  2023-03-16 11:07 [PATCH ulogd2 v3 0/2] pcap: prevent crashes when output `FILE *` is null Jeremy Sowden
  2023-03-16 11:07 ` [PATCH ulogd2 v3 1/2] pcap: simplify opening of output file Jeremy Sowden
  2023-03-16 11:07 ` [PATCH ulogd2 v3 2/2] pcap: prevent crashes when output `FILE *` is null Jeremy Sowden
@ 2023-03-16 11:36 ` Florian Westphal
  2023-03-16 23:36 ` Florian Westphal
  3 siblings, 0 replies; 10+ messages in thread
From: Florian Westphal @ 2023-03-16 11:36 UTC (permalink / raw)
  To: Jeremy Sowden; +Cc: Netfilter Devel

Jeremy Sowden <jeremy@azazel.net> wrote:
> If ulogd2 receives a signal it will attempt to re-open the pcap output
> file.  If this fails (because the permissions or ownership have changed
> for example), the FILE pointer will be null and when the next packet
> comes in, the null pointer will be passed to fwrite and ulogd will
> crash.
> 
> The first patch simplifies the logic of the code that opens the output
> file, and the second avoids closing the existing stream if `fopen`
> fails.
> 
> Link: https://bugs.launchpad.net/ubuntu/+source/ulogd2/+bug/1429778
> 
> Change since v2
> 
>  * The first patch is new.
>  * In the second patch, just keep the old stream open, rather than
>    disabling output and trying to reopen at intervals.

LGTM, thanks Jeremy.

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [PATCH ulogd2 v3 1/2] pcap: simplify opening of output file
  2023-03-16 11:07 ` [PATCH ulogd2 v3 1/2] pcap: simplify opening of output file Jeremy Sowden
  2023-03-16 11:24   ` Florian Westphal
@ 2023-03-16 19:02   ` Pablo Neira Ayuso
  2023-03-16 19:09     ` Jeremy Sowden
  1 sibling, 1 reply; 10+ messages in thread
From: Pablo Neira Ayuso @ 2023-03-16 19:02 UTC (permalink / raw)
  To: Jeremy Sowden; +Cc: Netfilter Devel

On Thu, Mar 16, 2023 at 11:07:53AM +0000, Jeremy Sowden wrote:
> Instead of statting the file, and choosing the mode with which to open
> it and whether to write the PCAP header based on the result, always open
> it with mode "a" and _then_ stat it.  This simplifies the flow-control
> and avoids a race between statting and opening.
> 
> Signed-off-by: Jeremy Sowden <jeremy@azazel.net>
> ---
>  output/pcap/ulogd_output_PCAP.c | 42 ++++++++++++---------------------
>  1 file changed, 15 insertions(+), 27 deletions(-)
> 
> diff --git a/output/pcap/ulogd_output_PCAP.c b/output/pcap/ulogd_output_PCAP.c
> index e7798f20c8fc..220fc6dec5fe 100644
> --- a/output/pcap/ulogd_output_PCAP.c
> +++ b/output/pcap/ulogd_output_PCAP.c
> @@ -220,33 +220,21 @@ static int append_create_outfile(struct ulogd_pluginstance *upi)
>  {
>  	struct pcap_instance *pi = (struct pcap_instance *) &upi->private;
>  	char *filename = upi->config_kset->ces[0].u.string;
> -	struct stat st_dummy;
> -	int exist = 0;
> -
> -	if (stat(filename, &st_dummy) == 0 && st_dummy.st_size > 0)
> -		exist = 1;
> -
> -	if (!exist) {
> -		pi->of = fopen(filename, "w");
> -		if (!pi->of) {
> -			ulogd_log(ULOGD_ERROR, "can't open pcap file %s: %s\n",
> -				  filename,
> -				  strerror(errno));
> -			return -EPERM;
> -		}
> -		if (!write_pcap_header(pi)) {
> -			ulogd_log(ULOGD_ERROR, "can't write pcap header: %s\n",
> -				  strerror(errno));
> -			return -ENOSPC;
> -		}
> -	} else {
> -		pi->of = fopen(filename, "a");
> -		if (!pi->of) {
> -			ulogd_log(ULOGD_ERROR, "can't open pcap file %s: %s\n", 
> -				filename,
> -				strerror(errno));
> -			return -EPERM;
> -		}		
> +	struct stat st_of;
> +
> +	pi->of = fopen(filename, "a");
> +	if (!pi->of) {
> +		ulogd_log(ULOGD_ERROR, "can't open pcap file %s: %s\n",
> +			  filename,
> +			  strerror(errno));
> +		return -EPERM;
> +	}
> +	if (fstat(fileno(pi->of), &st_of) == 0 && st_of.st_size == 0) {
> +	    if (!write_pcap_header(pi)) {
        ^^^^
coding style nitpick, it can be fixed before applying it.

> +		    ulogd_log(ULOGD_ERROR, "can't write pcap header: %s\n",
> +			      strerror(errno));
> +		    return -ENOSPC;
> +	    }
>  	}
>  
>  	return 0;
> -- 
> 2.39.2
> 

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [PATCH ulogd2 v3 1/2] pcap: simplify opening of output file
  2023-03-16 19:02   ` Pablo Neira Ayuso
@ 2023-03-16 19:09     ` Jeremy Sowden
  0 siblings, 0 replies; 10+ messages in thread
From: Jeremy Sowden @ 2023-03-16 19:09 UTC (permalink / raw)
  To: Pablo Neira Ayuso; +Cc: Netfilter Devel

[-- Attachment #1: Type: text/plain, Size: 2546 bytes --]

On 2023-03-16, at 20:02:15 +0100, Pablo Neira Ayuso wrote:
> On Thu, Mar 16, 2023 at 11:07:53AM +0000, Jeremy Sowden wrote:
> > Instead of statting the file, and choosing the mode with which to open
> > it and whether to write the PCAP header based on the result, always open
> > it with mode "a" and _then_ stat it.  This simplifies the flow-control
> > and avoids a race between statting and opening.
> > 
> > Signed-off-by: Jeremy Sowden <jeremy@azazel.net>
> > ---
> >  output/pcap/ulogd_output_PCAP.c | 42 ++++++++++++---------------------
> >  1 file changed, 15 insertions(+), 27 deletions(-)
> > 
> > diff --git a/output/pcap/ulogd_output_PCAP.c b/output/pcap/ulogd_output_PCAP.c
> > index e7798f20c8fc..220fc6dec5fe 100644
> > --- a/output/pcap/ulogd_output_PCAP.c
> > +++ b/output/pcap/ulogd_output_PCAP.c
> > @@ -220,33 +220,21 @@ static int append_create_outfile(struct ulogd_pluginstance *upi)
> >  {
> >  	struct pcap_instance *pi = (struct pcap_instance *) &upi->private;
> >  	char *filename = upi->config_kset->ces[0].u.string;
> > -	struct stat st_dummy;
> > -	int exist = 0;
> > -
> > -	if (stat(filename, &st_dummy) == 0 && st_dummy.st_size > 0)
> > -		exist = 1;
> > -
> > -	if (!exist) {
> > -		pi->of = fopen(filename, "w");
> > -		if (!pi->of) {
> > -			ulogd_log(ULOGD_ERROR, "can't open pcap file %s: %s\n",
> > -				  filename,
> > -				  strerror(errno));
> > -			return -EPERM;
> > -		}
> > -		if (!write_pcap_header(pi)) {
> > -			ulogd_log(ULOGD_ERROR, "can't write pcap header: %s\n",
> > -				  strerror(errno));
> > -			return -ENOSPC;
> > -		}
> > -	} else {
> > -		pi->of = fopen(filename, "a");
> > -		if (!pi->of) {
> > -			ulogd_log(ULOGD_ERROR, "can't open pcap file %s: %s\n", 
> > -				filename,
> > -				strerror(errno));
> > -			return -EPERM;
> > -		}		
> > +	struct stat st_of;
> > +
> > +	pi->of = fopen(filename, "a");
> > +	if (!pi->of) {
> > +		ulogd_log(ULOGD_ERROR, "can't open pcap file %s: %s\n",
> > +			  filename,
> > +			  strerror(errno));
> > +		return -EPERM;
> > +	}
> > +	if (fstat(fileno(pi->of), &st_of) == 0 && st_of.st_size == 0) {
> > +	    if (!write_pcap_header(pi)) {
>         ^^^^
> coding style nitpick,

Whoops.  Not sure what happened there.

> it can be fixed before applying it.

Please.

J.

> > +		    ulogd_log(ULOGD_ERROR, "can't write pcap header: %s\n",
> > +			      strerror(errno));
> > +		    return -ENOSPC;
> > +	    }
> >  	}
> >  
> >  	return 0;
> > -- 
> > 2.39.2
> > 
> 

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 833 bytes --]

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [PATCH ulogd2 v3 0/2] pcap: prevent crashes when output `FILE *` is null
  2023-03-16 11:07 [PATCH ulogd2 v3 0/2] pcap: prevent crashes when output `FILE *` is null Jeremy Sowden
                   ` (2 preceding siblings ...)
  2023-03-16 11:36 ` [PATCH ulogd2 v3 0/2] " Florian Westphal
@ 2023-03-16 23:36 ` Florian Westphal
  2023-03-17 11:34   ` Jeremy Sowden
  3 siblings, 1 reply; 10+ messages in thread
From: Florian Westphal @ 2023-03-16 23:36 UTC (permalink / raw)
  To: Jeremy Sowden; +Cc: Netfilter Devel

Jeremy Sowden <jeremy@azazel.net> wrote:
> If ulogd2 receives a signal it will attempt to re-open the pcap output
> file.  If this fails (because the permissions or ownership have changed
> for example), the FILE pointer will be null and when the next packet
> comes in, the null pointer will be passed to fwrite and ulogd will
> crash.
> 
> The first patch simplifies the logic of the code that opens the output
> file, and the second avoids closing the existing stream if `fopen`
> fails.
> 
> Link: https://bugs.launchpad.net/ubuntu/+source/ulogd2/+bug/1429778
> 
> Change since v2
> 
>  * The first patch is new.
>  * In the second patch, just keep the old stream open, rather than
>    disabling output and trying to reopen at intervals.

Applied, please double-check the mangling done in patch #1 and send
a followup fix if needed.

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [PATCH ulogd2 v3 0/2] pcap: prevent crashes when output `FILE *` is null
  2023-03-16 23:36 ` Florian Westphal
@ 2023-03-17 11:34   ` Jeremy Sowden
  0 siblings, 0 replies; 10+ messages in thread
From: Jeremy Sowden @ 2023-03-17 11:34 UTC (permalink / raw)
  To: Florian Westphal; +Cc: Netfilter Devel

[-- Attachment #1: Type: text/plain, Size: 993 bytes --]

On 2023-03-17, at 00:36:19 +0100, Florian Westphal wrote:
> Jeremy Sowden <jeremy@azazel.net> wrote:
> > If ulogd2 receives a signal it will attempt to re-open the pcap output
> > file.  If this fails (because the permissions or ownership have changed
> > for example), the FILE pointer will be null and when the next packet
> > comes in, the null pointer will be passed to fwrite and ulogd will
> > crash.
> > 
> > The first patch simplifies the logic of the code that opens the output
> > file, and the second avoids closing the existing stream if `fopen`
> > fails.
> > 
> > Link: https://bugs.launchpad.net/ubuntu/+source/ulogd2/+bug/1429778
> > 
> > Change since v2
> > 
> >  * The first patch is new.
> >  * In the second patch, just keep the old stream open, rather than
> >    disabling output and trying to reopen at intervals.
> 
> Applied, please double-check the mangling done in patch #1 and send
> a followup fix if needed.

Thanks, Florian.  LGTM.

J.

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 833 bytes --]

^ permalink raw reply	[flat|nested] 10+ messages in thread

end of thread, other threads:[~2023-03-17 11:36 UTC | newest]

Thread overview: 10+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2023-03-16 11:07 [PATCH ulogd2 v3 0/2] pcap: prevent crashes when output `FILE *` is null Jeremy Sowden
2023-03-16 11:07 ` [PATCH ulogd2 v3 1/2] pcap: simplify opening of output file Jeremy Sowden
2023-03-16 11:24   ` Florian Westphal
2023-03-16 11:32     ` Florian Westphal
2023-03-16 19:02   ` Pablo Neira Ayuso
2023-03-16 19:09     ` Jeremy Sowden
2023-03-16 11:07 ` [PATCH ulogd2 v3 2/2] pcap: prevent crashes when output `FILE *` is null Jeremy Sowden
2023-03-16 11:36 ` [PATCH ulogd2 v3 0/2] " Florian Westphal
2023-03-16 23:36 ` Florian Westphal
2023-03-17 11:34   ` Jeremy Sowden

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).