From 9d7d4458d94d0aac0a7edf999368eb18f89cb76a Mon Sep 17 00:00:00 2001 From: Jakub Hrozek Date: Mon, 2 Apr 2012 17:26:05 -0400 Subject: Convert read and write operations to sss_atomic_read https://fedorahosted.org/sssd/ticket/1209 --- src/providers/krb5/krb5_common.c | 26 ++++++++++---------------- 1 file changed, 10 insertions(+), 16 deletions(-) (limited to 'src/providers/krb5/krb5_common.c') diff --git a/src/providers/krb5/krb5_common.c b/src/providers/krb5/krb5_common.c index d33900f1..022745d6 100644 --- a/src/providers/krb5/krb5_common.c +++ b/src/providers/krb5/krb5_common.c @@ -321,25 +321,19 @@ errno_t write_krb5info_file(const char *realm, const char *server, goto done; } - written = 0; - while (written < server_len) { - ret = write(fd, server+written, server_len-written); - if (ret == -1) { - if (errno == EINTR || errno == EAGAIN) { - continue; - } - ret = errno; - DEBUG(1, ("write failed [%d][%s].\n", ret, strerror(ret))); - goto done; - } - else { - written += ret; - } + errno = 0; + written = sss_atomic_write_s(fd, discard_const(server), server_len); + if (written == -1) { + ret = errno; + DEBUG(SSSDBG_CRIT_FAILURE, + ("write failed [%d][%s].\n", ret, strerror(ret))); + goto done; } if (written != server_len) { - DEBUG(1, ("Write error, wrote [%d] bytes, expected [%d]\n", - written, server_len)); + DEBUG(SSSDBG_CRIT_FAILURE, + ("Write error, wrote [%d] bytes, expected [%d]\n", + written, server_len)); ret = EIO; goto done; } -- cgit