Blame SOURCES/lockdev-euidaccess.patch

4f8e46
diff -up lockdev-scm-2011-10-07/src/lockdev.c.access lockdev-scm-2011-10-07/src/lockdev.c
4f8e46
--- lockdev-scm-2011-10-07/src/lockdev.c.access	2011-07-22 09:37:10.000000000 +0200
4f8e46
+++ lockdev-scm-2011-10-07/src/lockdev.c	2013-12-05 11:56:57.836961642 +0100
4f8e46
@@ -95,6 +95,10 @@
4f8e46
  *
4f8e46
  */
4f8e46
 
4f8e46
+#ifndef _GNU_SOURCE
4f8e46
+   #define _GNU_SOURCE
4f8e46
+#endif
4f8e46
+
4f8e46
 #include <errno.h>
4f8e46
 #include <signal.h>
4f8e46
 #include <stdio.h>
4f8e46
@@ -125,6 +125,10 @@
4f8e46
 #include "lockdev.h"
4f8e46
 #include "ttylock.h"
4f8e46
 
4f8e46
+#ifndef LOCKDEV_ACCESS
4f8e46
+#define LOCKDEV_ACCESS  euidaccess
4f8e46
+#endif
4f8e46
+
4f8e46
 #define	LOCKDEV_PATH	SBINDIR "/lockdev"
4f8e46
 
4f8e46
 /*
4f8e46
@@ -616,7 +620,10 @@ dev_lock (const char *devname)
4f8e46
 	if ( stat( device, &statbuf) == -1 ) {
4f8e46
 		close_n_return(-errno);
4f8e46
 	}
4f8e46
-	if ( access( device, W_OK ) == -1 ) {
4f8e46
+	/* check that the caller has write permission to the device
4f8e46
+	 * to prevent denial-of-service attack by unauthorized users
4f8e46
+	 */
4f8e46
+	if ( LOCKDEV_ACCESS( device, W_OK ) == -1 ) {
4f8e46
 		close_n_return(-errno);
4f8e46
 	}
4f8e46
 
4f8e46
@@ -780,7 +787,10 @@ dev_relock (const char  *devname,
4f8e46
 	if ( stat( device, &statbuf) == -1 ) {
4f8e46
 		close_n_return(-errno);
4f8e46
 	}
4f8e46
-	if ( access( device, W_OK ) == -1 ) {
4f8e46
+	/* check that the caller has write permission to the device
4f8e46
+	 * to prevent denial-of-service attack by unauthorized users
4f8e46
+	 */
4f8e46
+	if ( LOCKDEV_ACCESS( device, W_OK ) == -1 ) {
4f8e46
 		close_n_return(-errno);
4f8e46
 	}
4f8e46
 
4f8e46
@@ -870,7 +880,10 @@ dev_unlock (const char *devname,
4f8e46
 	if ( stat( device, &statbuf) == -1 ) {
4f8e46
 		close_n_return(-errno);
4f8e46
 	}
4f8e46
-	if ( access( device, W_OK ) == -1 ) {
4f8e46
+	/* check that the caller has write permission to the device
4f8e46
+	 * to prevent denial-of-service attack by unauthorized users
4f8e46
+	 */
4f8e46
+	if ( LOCKDEV_ACCESS( device, W_OK ) == -1 ) {
4f8e46
 		close_n_return(-errno);
4f8e46
 	}
4f8e46
 
4f8e46
diff -ru lockdev-save/src/Makefile.am lockdev-scm-2011-10-07/src/Makefile.am
4f8e46
--- lockdev-save/src/Makefile.am	2014-09-18 13:42:00.363741658 +0200
4f8e46
+++ lockdev-scm-2011-10-07/src/Makefile.am	2014-09-18 13:52:10.307868154 +0200
4f8e46
@@ -6,7 +6,6 @@
4f8e46
 AM_CPPFLAGS = -include $(top_builddir)/config.h -DSBINDIR=\"$(sbindir)\"
4f8e46
 
4f8e46
 lockdev_SOURCES = sample.c
4f8e46
-lockdev_LDADD = liblockdev.la
4f8e46
 
4f8e46
 baudboy_SOURCES = baudboy_test.c
4f8e46
 baudboy_LDADD = liblockdev.la
4f8e46
Solo in lockdev-scm-2011-10-07/src: Makefile.in
4f8e46
diff -ru lockdev-save/src/sample.c lockdev-scm-2011-10-07/src/sample.c
4f8e46
--- lockdev-save/src/sample.c	2014-09-18 13:42:00.363741658 +0200
4f8e46
+++ lockdev-scm-2011-10-07/src/sample.c	2014-09-18 14:06:03.769023380 +0200
4f8e46
@@ -6,6 +6,13 @@
4f8e46
 #include <fcntl.h>
4f8e46
 #include "lockdev.h"
4f8e46
 
4f8e46
+/* ttylock functions swap the real/effective uid/gid for us, so
4f8e46
+ * use access instead of euidaccess.
4f8e46
+ */
4f8e46
+#define LOCKDEV_ACCESS access
4f8e46
+#undef TTYLOCK_USE_HELPER
4f8e46
+#include "lockdev.c"
4f8e46
+
4f8e46
 void
4f8e46
 usage (void)
4f8e46
 {
4f8e46
Solo in lockdev-scm-2011-10-07: VERSION