diff options
Diffstat (limited to '9879affbbdec684adb343b331f47f06788681e3b.patch')
-rw-r--r-- | 9879affbbdec684adb343b331f47f06788681e3b.patch | 63 |
1 files changed, 63 insertions, 0 deletions
diff --git a/9879affbbdec684adb343b331f47f06788681e3b.patch b/9879affbbdec684adb343b331f47f06788681e3b.patch new file mode 100644 index 0000000..a6a451e --- /dev/null +++ b/9879affbbdec684adb343b331f47f06788681e3b.patch @@ -0,0 +1,63 @@ +From 9879affbbdec684adb343b331f47f06788681e3b Mon Sep 17 00:00:00 2001 +From: Thomas Klausner <tk@giga.or.at> +Date: Fri, 6 Oct 2017 12:24:22 +0200 +Subject: [PATCH] nonrandomopen: override open64() as well. + +--- + regress/nonrandomopen.c | 32 +++++++++++++++++++++++++++++++- + 1 file changed, 31 insertions(+), 1 deletion(-) + +diff --git a/regress/nonrandomopen.c b/regress/nonrandomopen.c +index 4f74222..dd90c14 100644 +--- a/regress/nonrandomopen.c ++++ b/regress/nonrandomopen.c +@@ -47,7 +47,8 @@ + #endif + + static int inited = 0; +-static int (*real_open)(const char *path, int mode, ...) = NULL; ++static int (*real_open)(const char *path, int flags, ...) = NULL; ++static int (*real_open64)(const char *path, int flags, ...) = NULL; + + static void + init(void) +@@ -55,6 +56,10 @@ init(void) + real_open = dlsym(RTLD_NEXT, "open"); + if (!real_open) + abort(); ++ real_open64 = dlsym(RTLD_NEXT, "open64"); ++ if (!real_open64) { ++ /* does not have to exist */ ++ } + inited = 1; + } + +@@ -78,3 +83,28 @@ open(const char *path, int flags, ...) + return real_open(path, flags, mode); + } + } ++ ++int ++open64(const char *path, int flags, ...) ++{ ++ va_list ap; ++ mode_t mode; ++ ++ if (!inited) { ++ init(); ++ } ++ ++ if (!real_open64) { ++ abort(); ++ } ++ ++ va_start(ap, flags); ++ mode = va_arg(ap, mode_t); ++ va_end(ap); ++ ++ if (strcmp(path, "/dev/urandom") == 0) { ++ return real_open64("/dev/zero", flags, mode); ++ } else { ++ return real_open64(path, flags, mode); ++ } ++} |