Re: net/net-snmp: fix off-by-one in file logging

2019-05-20 Thread Stuart Henderson
On 2019/05/19 23:44, Fabian Raetz wrote:
> Hi
> 
> i tried netsnmpd from net/net-snmp today and run into a problem with the
> default config where the daemon crashed while starting.
> 
> It seemed to be an off-by-one related to file based logging which already
> got fixed upstream [0]. netsnmpd started after applying the patch from
> upstream.

Thanks, I've added the patch.



net/net-snmp: fix off-by-one in file logging

2019-05-19 Thread Fabian Raetz
Hi

i tried netsnmpd from net/net-snmp today and run into a problem with the
default config where the daemon crashed while starting.

It seemed to be an off-by-one related to file based logging which already
got fixed upstream [0]. netsnmpd started after applying the patch from
upstream.

[0]
https://sourceforge.net/p/net-snmp/code/ci/c890caa47876a0da05e69cae1428b65d9ec70478/

Cheers,
Fabian

diff --git a/net/net-snmp/patches/patch-snmplib_snmp_logging_c
b/net/net-snmp/patches/patch-snmplib_snmp_logging_c
new file mode 100644
index 000..d9497c859b7
--- /dev/null
+++ b/net/net-snmp/patches/patch-snmplib_snmp_logging_c
@@ -0,0 +1,30 @@
+$OpenBSD$
+
+Avoid off-by-one error when logging "" to a file
+
+Upstream commit
https://sourceforge.net/p/net-snmp/code/ci/c890caa47876a0da05e69cae1428b65d9ec70478/
+
+Index: snmplib/snmp_logging.c
+--- snmplib/snmp_logging.c.orig
 snmplib/snmp_logging.c
+@@ -1254,6 +1254,7 @@ log_handler_file(netsnmp_log_handler* logh, int
pr
+ {
+ FILE   *fhandle;
+ charsbuf[40];
++int len = strlen( str );
+
+ /*
+  * We use imagic to save information about whether the next output
+@@ -1282,7 +1283,11 @@ log_handler_file(netsnmp_log_handler* logh, int
pr
+ }
+ fprintf(fhandle, "%s%s", sbuf, str);
+ fflush(fhandle);
+-logh->imagic = str[strlen(str) - 1] == '\n';
++if (len > 0) {
++logh->imagic = str[strlen(str) - 1] == '\n';
++} else {
++logh->imagic = 0;
++}
+ return 1;
+ }
+ #endif /* NETSNMP_FEATURE_REMOVE_LOGGING_FILE */
diff --git a/net/net-snmp/patches/patch-snmplib_snmp_logging_c b/net/net-snmp/patches/patch-snmplib_snmp_logging_c
new file mode 100644
index 000..d9497c859b7
--- /dev/null
+++ b/net/net-snmp/patches/patch-snmplib_snmp_logging_c
@@ -0,0 +1,30 @@
+$OpenBSD$
+
+Avoid off-by-one error when logging "" to a file
+
+Upstream commit https://sourceforge.net/p/net-snmp/code/ci/c890caa47876a0da05e69cae1428b65d9ec70478/
+
+Index: snmplib/snmp_logging.c
+--- snmplib/snmp_logging.c.orig
 snmplib/snmp_logging.c
+@@ -1254,6 +1254,7 @@ log_handler_file(netsnmp_log_handler* logh, int pr
+ {
+ FILE   *fhandle;
+ charsbuf[40];
++int len = strlen( str );
+ 
+ /*
+  * We use imagic to save information about whether the next output
+@@ -1282,7 +1283,11 @@ log_handler_file(netsnmp_log_handler* logh, int pr
+ }
+ fprintf(fhandle, "%s%s", sbuf, str);
+ fflush(fhandle);
+-logh->imagic = str[strlen(str) - 1] == '\n';
++if (len > 0) {
++logh->imagic = str[strlen(str) - 1] == '\n';
++} else {
++logh->imagic = 0;
++}
+ return 1;
+ }
+ #endif /* NETSNMP_FEATURE_REMOVE_LOGGING_FILE */