69 lines
1.1 KiB
C
69 lines
1.1 KiB
C
|
#include <nt.h>
|
||
|
#include <ntrtl.h>
|
||
|
|
||
|
#include <signal.h>
|
||
|
#include <errno.h>
|
||
|
#include <sys/wait.h>
|
||
|
#include <unistd.h>
|
||
|
#include <sys/stat.h>
|
||
|
#include <fcntl.h>
|
||
|
#include <stdio.h>
|
||
|
|
||
|
#include "tsttmp.h" // defines DbgPrint as printf
|
||
|
|
||
|
extern int errno;
|
||
|
VOID umask0(void);
|
||
|
|
||
|
//
|
||
|
// 'tstumask'
|
||
|
//
|
||
|
|
||
|
int
|
||
|
__cdecl
|
||
|
main(int argc, char *argv[])
|
||
|
{
|
||
|
|
||
|
if (argc != 1) {
|
||
|
DbgPrint("Usage: '%s'\n", argv[0]);
|
||
|
return 1;
|
||
|
}
|
||
|
umask0();
|
||
|
|
||
|
return 1;
|
||
|
}
|
||
|
|
||
|
|
||
|
VOID
|
||
|
umask0(void)
|
||
|
{
|
||
|
mode_t oldmask, savemask;
|
||
|
|
||
|
DbgPrint("umask0:++\n");
|
||
|
|
||
|
oldmask = umask(S_IRWXU);
|
||
|
savemask = oldmask;
|
||
|
oldmask = umask(S_IRWXG);
|
||
|
if ((oldmask & S_IRWXU) != S_IRWXU) {
|
||
|
DbgPrint("FAIL on S_IRWXU\n");
|
||
|
return;
|
||
|
}
|
||
|
oldmask = umask(S_IRWXO);
|
||
|
if ((oldmask & S_IRWXG) != S_IRWXG) {
|
||
|
DbgPrint("FAIL on S_IRWXG\n");
|
||
|
return;
|
||
|
}
|
||
|
oldmask = umask((mode_t) 0L);
|
||
|
if ((oldmask & S_IRWXO) != S_IRWXO) {
|
||
|
DbgPrint("FAIL on S_IRWXO\n");
|
||
|
return;
|
||
|
}
|
||
|
oldmask = umask(savemask);
|
||
|
if ( (oldmask & _S_PROT) != (mode_t) 0L) {
|
||
|
DbgPrint("FAIL on 0 perm\n");
|
||
|
return;
|
||
|
}
|
||
|
DbgPrint("PASSED\n");
|
||
|
|
||
|
DbgPrint("umask0:--\n");
|
||
|
}
|