sprinle O_CLOEXEC, from Andrew Bartlett
git-svn-id: svn://svn.h5l.se/heimdal/trunk/heimdal@23474 ec53bebd-3082-4978-b11e-865c3cabbd6b
This commit is contained in:
@@ -3452,7 +3452,7 @@ seed_something(void)
|
|||||||
so use 0 for the entropy estimate */
|
so use 0 for the entropy estimate */
|
||||||
if (RAND_file_name(seedfile, sizeof(seedfile))) {
|
if (RAND_file_name(seedfile, sizeof(seedfile))) {
|
||||||
int fd;
|
int fd;
|
||||||
fd = open(seedfile, O_RDONLY);
|
fd = open(seedfile, O_RDONLY | O_BINARY | O_CLOEXEC);
|
||||||
if (fd >= 0) {
|
if (fd >= 0) {
|
||||||
ssize_t ret;
|
ssize_t ret;
|
||||||
rk_cloexec(fd);
|
rk_cloexec(fd);
|
||||||
|
@@ -395,7 +395,7 @@ fcc_initialize(krb5_context context,
|
|||||||
|
|
||||||
unlink (filename);
|
unlink (filename);
|
||||||
|
|
||||||
ret = fcc_open(context, id, &fd, O_RDWR | O_CREAT | O_EXCL | O_BINARY, 0600);
|
ret = fcc_open(context, id, &fd, O_RDWR | O_CREAT | O_EXCL | O_BINARY | O_CLOEXEC, 0600);
|
||||||
if(ret)
|
if(ret)
|
||||||
return ret;
|
return ret;
|
||||||
{
|
{
|
||||||
@@ -462,7 +462,7 @@ fcc_store_cred(krb5_context context,
|
|||||||
int ret;
|
int ret;
|
||||||
int fd;
|
int fd;
|
||||||
|
|
||||||
ret = fcc_open(context, id, &fd, O_WRONLY | O_APPEND | O_BINARY, 0);
|
ret = fcc_open(context, id, &fd, O_WRONLY | O_APPEND | O_BINARY | O_CLOEXEC, 0);
|
||||||
if(ret)
|
if(ret)
|
||||||
return ret;
|
return ret;
|
||||||
{
|
{
|
||||||
@@ -503,7 +503,7 @@ init_fcc (krb5_context context,
|
|||||||
krb5_storage *sp;
|
krb5_storage *sp;
|
||||||
krb5_error_code ret;
|
krb5_error_code ret;
|
||||||
|
|
||||||
ret = fcc_open(context, id, &fd, O_RDONLY | O_BINARY, 0);
|
ret = fcc_open(context, id, &fd, O_RDONLY | O_BINARY | O_CLOEXEC, 0);
|
||||||
if(ret)
|
if(ret)
|
||||||
return ret;
|
return ret;
|
||||||
|
|
||||||
@@ -851,14 +851,14 @@ fcc_move(krb5_context context, krb5_ccache from, krb5_ccache to)
|
|||||||
int fd1, fd2;
|
int fd1, fd2;
|
||||||
char buf[BUFSIZ];
|
char buf[BUFSIZ];
|
||||||
|
|
||||||
ret = fcc_open(context, from, &fd1, O_RDONLY | O_BINARY, 0);
|
ret = fcc_open(context, from, &fd1, O_RDONLY | O_BINARY | O_CLOEXEC, 0);
|
||||||
if(ret)
|
if(ret)
|
||||||
return ret;
|
return ret;
|
||||||
|
|
||||||
unlink(FILENAME(to));
|
unlink(FILENAME(to));
|
||||||
|
|
||||||
ret = fcc_open(context, to, &fd2,
|
ret = fcc_open(context, to, &fd2,
|
||||||
O_WRONLY | O_CREAT | O_EXCL | O_BINARY, 0600);
|
O_WRONLY | O_CREAT | O_EXCL | O_BINARY | O_CLOEXEC, 0600);
|
||||||
if(ret)
|
if(ret)
|
||||||
goto out1;
|
goto out1;
|
||||||
|
|
||||||
|
@@ -385,7 +385,7 @@ fkt_start_seq_get(krb5_context context,
|
|||||||
krb5_keytab id,
|
krb5_keytab id,
|
||||||
krb5_kt_cursor *c)
|
krb5_kt_cursor *c)
|
||||||
{
|
{
|
||||||
return fkt_start_seq_get_int(context, id, O_RDONLY | O_BINARY, 0, c);
|
return fkt_start_seq_get_int(context, id, O_RDONLY | O_BINARY | O_CLOEXEC, 0, c);
|
||||||
}
|
}
|
||||||
|
|
||||||
static krb5_error_code
|
static krb5_error_code
|
||||||
@@ -488,9 +488,9 @@ fkt_add_entry(krb5_context context,
|
|||||||
krb5_data keytab;
|
krb5_data keytab;
|
||||||
int32_t len;
|
int32_t len;
|
||||||
|
|
||||||
fd = open (d->filename, O_RDWR | O_BINARY);
|
fd = open (d->filename, O_RDWR | O_BINARY | O_CLOEXEC);
|
||||||
if (fd < 0) {
|
if (fd < 0) {
|
||||||
fd = open (d->filename, O_RDWR | O_CREAT | O_EXCL | O_BINARY, 0600);
|
fd = open (d->filename, O_RDWR | O_CREAT | O_EXCL | O_BINARY | O_CLOEXEC, 0600);
|
||||||
if (fd < 0) {
|
if (fd < 0) {
|
||||||
ret = errno;
|
ret = errno;
|
||||||
krb5_set_error_message(context, ret, "open(%s): %s", d->filename,
|
krb5_set_error_message(context, ret, "open(%s): %s", d->filename,
|
||||||
@@ -632,7 +632,7 @@ fkt_remove_entry(krb5_context context,
|
|||||||
int found = 0;
|
int found = 0;
|
||||||
krb5_error_code ret;
|
krb5_error_code ret;
|
||||||
|
|
||||||
ret = fkt_start_seq_get_int(context, id, O_RDWR | O_BINARY, 1, &cursor);
|
ret = fkt_start_seq_get_int(context, id, O_RDWR | O_BINARY | O_CLOEXEC, 1, &cursor);
|
||||||
if(ret != 0)
|
if(ret != 0)
|
||||||
goto out; /* return other error here? */
|
goto out; /* return other error here? */
|
||||||
while(fkt_next_entry_int(context, id, &e, &cursor,
|
while(fkt_next_entry_int(context, id, &e, &cursor,
|
||||||
|
@@ -194,7 +194,7 @@ akf_start_seq_get(krb5_context context,
|
|||||||
int32_t ret;
|
int32_t ret;
|
||||||
struct akf_data *d = id->data;
|
struct akf_data *d = id->data;
|
||||||
|
|
||||||
c->fd = open (d->filename, O_RDONLY|O_BINARY, 0600);
|
c->fd = open (d->filename, O_RDONLY | O_BINARY | O_CLOEXEC, 0600);
|
||||||
if (c->fd < 0) {
|
if (c->fd < 0) {
|
||||||
ret = errno;
|
ret = errno;
|
||||||
krb5_set_error_message(context, ret, "keytab afs keyfil open %s failed: %s",
|
krb5_set_error_message(context, ret, "keytab afs keyfil open %s failed: %s",
|
||||||
@@ -301,10 +301,10 @@ akf_add_entry(krb5_context context,
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
fd = open (d->filename, O_RDWR | O_BINARY);
|
fd = open (d->filename, O_RDWR | O_BINARY | O_CLOEXEC);
|
||||||
if (fd < 0) {
|
if (fd < 0) {
|
||||||
fd = open (d->filename,
|
fd = open (d->filename,
|
||||||
O_RDWR | O_BINARY | O_CREAT | O_EXCL, 0600);
|
O_RDWR | O_BINARY | O_CREAT | O_EXCL | O_CLOEXEC, 0600);
|
||||||
if (fd < 0) {
|
if (fd < 0) {
|
||||||
ret = errno;
|
ret = errno;
|
||||||
krb5_set_error_message(context, ret, "open(%s): %s", d->filename,
|
krb5_set_error_message(context, ret, "open(%s): %s", d->filename,
|
||||||
|
@@ -176,6 +176,10 @@ struct _krb5_krb_auth_data;
|
|||||||
#define O_BINARY 0
|
#define O_BINARY 0
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifndef O_CLOEXEC
|
||||||
|
#define O_CLOEXEC 0
|
||||||
|
#endif
|
||||||
|
|
||||||
#define KRB5_BUFSIZ 1024
|
#define KRB5_BUFSIZ 1024
|
||||||
|
|
||||||
typedef enum {
|
typedef enum {
|
||||||
|
Reference in New Issue
Block a user