lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Date:	Wed, 13 Apr 2016 13:57:50 +0100
From:	"Richard W.M. Jones" <rjones@...hat.com>
To:	linux-kernel@...r.kernel.org
Cc:	tglx@...utronix.de, mingo@...hat.com, hpa@...or.com,
	akpm@...ux-foundation.org, luto@...nel.org,
	viro@...iv.linux.org.uk, mathieu.desnoyers@...icios.com,
	zab@...hat.com, emunson@...mai.com, paulmck@...ux.vnet.ibm.com,
	aarcange@...hat.com, josh@...htriplett.org, xemul@...allels.com,
	sfr@...b.auug.org.au, milosz@...in.com, rostedt@...dmis.org,
	arnd@...db.de, ebiederm@...ssion.com, gorcunov@...nvz.org,
	iulia.manda21@...il.com, dave.hansen@...ux.intel.com,
	mguzik@...hat.com, adobriyan@...il.com, dave@...olabs.net,
	linux-api@...r.kernel.org, gorcunov@...il.com, fw@...eb.enyo.de
Subject: [PATCH v2 0/2] vfs: Define new syscall getumask.

v1 -> v2:

 - Use current_umask() instead of current->fs->umask.

 - Retested it.

----------------------------------------------------------------------

It's not possible to read the process umask without also modifying it,
which is what umask(2) does.  A library cannot read umask safely,
especially if the main program might be multithreaded.

This patch series adds a trivial system call "getumask" which returns
the umask of the current process.

Another approach to this has been attempted before, adding something
to /proc, although it didn't go anywhere.  See:

  http://comments.gmane.org/gmane.linux.kernel/1292109

Another way to solve this would be to add a thread-safe getumask to
glibc.  Since glibc could own the mutex, this would permit libraries
linked to this glibc to read umask safely.

I should also note that man-pages documents getumask(3), but no
version of glibc has ever implemented it.

Typical test script:

#include <stdio.h>
#include <stdlib.h>
#include <linux/unistd.h>
#include <sys/syscall.h>

int main(int argc, char *argv[])
{
  int r = syscall(329);
  if (r == -1) {
    perror("getumask");
    exit(1);
  }
  printf("umask = %o\n", r);
  exit(0);
}

$ ./getumask 
umask = 22

Rich.

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ