diff -up lockdev-scm-2011-10-07/src/lockdev.c.access lockdev-scm-2011-10-07/src/lockdev.c --- lockdev-scm-2011-10-07/src/lockdev.c.access 2011-07-22 09:37:10.000000000 +0200 +++ lockdev-scm-2011-10-07/src/lockdev.c 2013-06-03 12:34:16.870750845 +0200 @@ -616,7 +616,10 @@ dev_lock (const char *devname) if ( stat( device, &statbuf) == -1 ) { close_n_return(-errno); } - if ( access( device, W_OK ) == -1 ) { + /* check that the caller has write permission to the device + * to prevent denial-of-service attack by unauthorized users + */ + if ( euidaccess( device, W_OK ) == -1 ) { close_n_return(-errno); } @@ -780,7 +783,10 @@ dev_relock (const char *devname, if ( stat( device, &statbuf) == -1 ) { close_n_return(-errno); } - if ( access( device, W_OK ) == -1 ) { + /* check that the caller has write permission to the device + * to prevent denial-of-service attack by unauthorized users + */ + if ( euidaccess( device, W_OK ) == -1 ) { close_n_return(-errno); } @@ -870,7 +876,10 @@ dev_unlock (const char *devname, if ( stat( device, &statbuf) == -1 ) { close_n_return(-errno); } - if ( access( device, W_OK ) == -1 ) { + /* check that the caller has write permission to the device + * to prevent denial-of-service attack by unauthorized users + */ + if ( euidaccess( device, W_OK ) == -1 ) { close_n_return(-errno); }