Add sanity check that libopenconnect matches the openconnect executable
authorDavid Woodhouse <David.Woodhouse@intel.com>
Mon, 7 Nov 2011 22:16:12 +0000 (22:16 +0000)
committerDavid Woodhouse <David.Woodhouse@intel.com>
Mon, 7 Nov 2011 22:16:12 +0000 (22:16 +0000)
Signed-off-by: David Woodhouse <David.Woodhouse@intel.com>
Makefile.am
main.c

index d036e3d..9aaa7d4 100644 (file)
@@ -31,6 +31,7 @@ EXTRA_DIST = version.sh openconnect.html openconnect.8 COPYING.LGPL
 
 DISTCLEANFILES = $(pkgconfig_DATA)
 
+main.o: version.c
 version.c: $(library_srcs) $(openconnect_SOURCES) Makefile.am configure.ac \
           openconnect.h openconnect-internal.h version.sh @GITVERSIONDEPS@
        @cd $(srcdir) && ./version.sh $@
diff --git a/main.c b/main.c
index 4be4447..44548e8 100644 (file)
--- a/main.c
+++ b/main.c
@@ -60,6 +60,12 @@ static void syslog_progress(void *_vpninfo,
 static int validate_peer_cert(void *_vpninfo,
                              X509 *peer_cert, const char *reason);
 
+/* A sanity check that the openconnect executable is running against a
+   library of the same version */
+#define openconnect_version openconnect_binary_version
+#include "version.c"
+#undef openconnect_version
+
 int verbose = PRG_INFO;
 int background;
 int do_passphrase_from_fsid;
@@ -244,6 +250,12 @@ int main(int argc, char **argv)
        setlocale(LC_ALL, "");
 #endif
 
+       if (strcmp(openconnect_version, openconnect_binary_version)) {
+               fprintf(stderr, _("WARNING: This version of openconnect is %s but\n"
+                                 "         the libopenconnect library is %s\n"),
+                       openconnect_binary_version, openconnect_version);
+       }
+                       
        openconnect_init_openssl();
 
        vpninfo = malloc(sizeof(*vpninfo));