From c2c36d9c09f22d8e83b26fcd71182c267795111f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marek=20Marczykowski-G=C3=B3recki?= Date: Fri, 11 Dec 2015 21:42:31 +0100 Subject: [PATCH] qrexec-lib: add glibc version test check for having syncfs Compile fix for wheezy, which has too old glibc (2.13). --- qrexec-lib/unpack.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/qrexec-lib/unpack.c b/qrexec-lib/unpack.c index fbb0b89..9c3fa48 100644 --- a/qrexec-lib/unpack.c +++ b/qrexec-lib/unpack.c @@ -33,6 +33,10 @@ void send_status_and_crc(int code, const char *last_filename); #define O_TMPFILE_MASK (__O_TMPFILE | O_DIRECTORY | O_CREAT) #endif +#if __GLIBC__ > 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 14) +#define HAVE_SYNCFS +#endif + void do_exit(int code, const char *last_filename) { close(0); @@ -208,8 +212,10 @@ void process_one_file(struct file_header *untrusted_hdr) int do_unpack(void) { struct file_header untrusted_hdr; +#ifdef HAVE_SYNCFS int cwd_fd; int saved_errno; +#endif total_bytes = total_files = 0; /* initialize checksum */ @@ -226,10 +232,12 @@ int do_unpack(void) process_one_file(&untrusted_hdr); } +#ifdef HAVE_SYNCFS saved_errno = errno; cwd_fd = open(".", O_RDONLY); if (cwd_fd >= 0 && syncfs(cwd_fd) == 0 && close(cwd_fd) == 0) errno = saved_errno; +#endif send_status_and_crc(errno, untrusted_namebuf); return errno;