|
@ -0,0 +1,34 @@ |
|
|
|
|
|
--- a/pkg/rootless/rootless_linux.c
|
|
|
|
|
|
+++ b/pkg/rootless/rootless_linux.c
|
|
|
|
|
|
@@ -19,6 +19,15 @@
|
|
|
|
|
|
#include <sys/select.h> |
|
|
|
|
|
#include <stdio.h> |
|
|
|
|
|
|
|
|
|
|
|
+#ifndef TEMP_FAILURE_RETRY
|
|
|
|
|
|
+#define TEMP_FAILURE_RETRY(expression) \
|
|
|
|
|
|
+ (__extension__ \
|
|
|
|
|
|
+ ({ long int __result; \
|
|
|
|
|
|
+ do __result = (long int) (expression); \
|
|
|
|
|
|
+ while (__result == -1L && errno == EINTR); \
|
|
|
|
|
|
+ __result; }))
|
|
|
|
|
|
+#endif
|
|
|
|
|
|
+
|
|
|
|
|
|
#define cleanup_free __attribute__ ((cleanup (cleanup_freep))) |
|
|
|
|
|
#define cleanup_close __attribute__ ((cleanup (cleanup_closep))) |
|
|
|
|
|
#define cleanup_dir __attribute__ ((cleanup (cleanup_dirp))) |
|
|
|
|
|
@@ -72,15 +81,6 @@ int rename_noreplace (int olddirfd, cons
|
|
|
|
|
|
return rename (oldpath, newpath); |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
-#ifndef TEMP_FAILURE_RETRY
|
|
|
|
|
|
-#define TEMP_FAILURE_RETRY(expression) \
|
|
|
|
|
|
- (__extension__ \
|
|
|
|
|
|
- ({ long int __result; \
|
|
|
|
|
|
- do __result = (long int) (expression); \
|
|
|
|
|
|
- while (__result == -1L && errno == EINTR); \
|
|
|
|
|
|
- __result; }))
|
|
|
|
|
|
-#endif
|
|
|
|
|
|
-
|
|
|
|
|
|
static const char *_max_user_namespaces = "/proc/sys/user/max_user_namespaces"; |
|
|
|
|
|
static const char *_unprivileged_user_namespaces = "/proc/sys/kernel/unprivileged_userns_clone"; |
|
|
|
|
|
|