]> git.ozlabs.org Git - ppp.git/commitdiff
pppd: Provide error() implementation in pppoe-discovery
authorStefan Nickl <Stefan.Nickl@gmail.com>
Wed, 10 Aug 2016 14:52:12 +0000 (16:52 +0200)
committerStefan Nickl <Stefan.Nickl@gmail.com>
Sat, 15 Oct 2016 17:00:59 +0000 (19:00 +0200)
The pppoe-discovery program calls error() from the CHECK_ROOM macro
defined in pppoe.h. Since pppoe-discovery is a standalone program not
linked with the rest of pppd, the only way this could build is by
linking to glibc's proprietary error(3) function instead of the function
of the same name (but with different arguments) defined in pppd/utils.c.

So with glibc this builds, but will probably crash when the assertion is
triggered. As the assertion is unlikely to fail, nobody has noticed.

The build however fails with musl libc or uClibc since they don't
provide the doppelganger.

Signed-off-by: Stefan Nickl <Stefan.Nickl@gmail.com>
pppd/plugins/rp-pppoe/pppoe-discovery.c

index 3d3bf4eecc816c59aad3aee24b94944150593147..55037dffb02322e6d92cf099270b5e41739f46b4 100644 (file)
@@ -9,6 +9,7 @@
  *
  */
 
+#include <stdarg.h>
 #include <stdio.h>
 #include <stdlib.h>
 #include <unistd.h>
@@ -55,6 +56,14 @@ void die(int status)
        exit(status);
 }
 
+void error(char *fmt, ...)
+{
+    va_list pvar;
+    va_start(pvar, fmt);
+    vfprintf(stderr, fmt, pvar);
+    va_end(pvar);
+}
+
 /* Initialize frame types to RFC 2516 values.  Some broken peers apparently
    use different frame types... sigh... */