/*
- * Copyright (c) 2016 Cisco and/or its affiliates.
+ * Copyright (c) 2016-2019 Cisco and/or its affiliates.
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at:
#endif
typedef int (*__libc_fcntl) (int fd, int cmd, ...);
+#ifdef HAVE_FCNTL64
+typedef int (*__libc_fcntl64) (int fd, int cmd, ...);
+#endif
typedef FILE *(*__libc_fopen) (const char *name, const char *mode);
#ifdef HAVE_FOPEN64
typedef FILE *(*__libc_fopen64) (const char *name, const char *mode);
SWRAP_SYMBOL_ENTRY (dup2);
#endif
SWRAP_SYMBOL_ENTRY (fcntl);
+#ifdef HAVE_FCNTL64
+ SWRAP_SYMBOL_ENTRY (fcntl64);
+#endif
SWRAP_SYMBOL_ENTRY (fopen);
#ifdef HAVE_FOPEN64
SWRAP_SYMBOL_ENTRY (fopen64);
void *handle = NULL;
int i;
-#ifdef RTLD_DEEPBIND
+#if defined(RTLD_DEEPBIND) && !defined(CLIB_SANITIZE_ADDR)
flags |= RTLD_DEEPBIND;
#endif
}
#endif
-DO_NOT_SANITIZE_ADDRESS_ATTRIBUTE int
+int
libc_vfcntl (int fd, int cmd, va_list ap)
{
- long int args[4];
- int rc;
- int i;
-
swrap_bind_symbol_libc (fcntl);
+ return swrap.libc.symbols._libc_fcntl.f (fd, cmd, va_arg (ap, long int));
+}
- for (i = 0; i < 4; i++)
- {
- args[i] = va_arg (ap, long int);
- }
-
- rc = swrap.libc.symbols._libc_fcntl.f (fd,
- cmd,
- args[0], args[1], args[2], args[3]);
-
- return rc;
+#ifdef HAVE_FCNTL64
+int
+libc_vfcntl64 (int fd, int cmd, va_list ap)
+{
+ swrap_bind_symbol_libc (fcntl64);
+ return swrap.libc.symbols._libc_fcntl64.f (fd, cmd, va_arg (ap, long int));
}
+#endif
-DO_NOT_SANITIZE_ADDRESS_ATTRIBUTE int
+int
libc_vioctl (int fd, int cmd, va_list ap)
{
long int args[4];