/*
* Copyright (c) 1999 Proofpoint, Inc. and its suppliers.
* All rights reserved.
*
* By using this file, you agree to the terms and conditions set
* forth in the LICENSE file which can be found at the top level of
* the sendmail distribution.
*
*/
/*
** This program tests your system to see if you have the lovely
** security-defeating semantics that an open with O_CREAT|O_EXCL
** set will successfully open a file named by a symbolic link that
** points to a non-existent file. Sadly, Posix is mute on what
** should happen in this situation.
**
** Results to date:
** AIX 3.2 OK
** BSD family OK
** FreeBSD 2.1 OK
** DEC OSF/1 3.0 OK
** HP-UX 9.04 FAIL
** HP-UX 9.05 FAIL
** HP-UX 9.07 OK
** HP-UX 10.01 OK
** HP-UX 10.10 OK
** HP-UX 10.20 OK
** Irix 5.3 OK
** Irix 6.2 OK
** Irix 6.3 OK
** Irix 6.4 OK
** Linux OK
** NeXT 2.1 OK
** Solaris 2.x OK
** SunOS 4.x OK
** Ultrix 4.3 OK
*/
#include <errno.h>
#include <fcntl.h>
#include <stdio.h>
#include <unistd.h>
#ifndef lint
#endif /* ! lint */
static void
int status;
{
}
int
int argc;
char **argv;
{
{
printf("Could not create %s->%s symlink: %d\n",
bail(1);
}
{
printf("%s already exists -- remove and try again.\n",
Attackee);
bail(1);
}
{
{
printf("Weird. Open failed but %s was created anyhow (errno = %d)\n",
bail(1);
}
printf("Good show! Exclusive open works properly with symbolic links (errno = %d).\n",
bail(0);
}
{
printf("Weird. Open succeeded but %s was not created\n",
Attackee);
bail(2);
}
printf("Bad news: you can do an exclusive open through a symbolic link\n");
bail(1);
/* NOTREACHED */
exit(0);
}