fs-util: avoid overflow in MODE_TO_PTR() with MODE_INVALID
Note, currently MODE_TO_PTR() and PTR_TO_MODE() are only used in src/udev/udev-rules.c . Fixes CID#1548060.
This commit is contained in:
+6
-2
@@ -6,8 +6,12 @@
|
||||
|
||||
/* The following macros add 1 when converting things, since 0 is a valid mode, while the pointer
|
||||
* NULL is special */
|
||||
#define PTR_TO_MODE(p) ((mode_t) ((uintptr_t) (p)-1))
|
||||
#define MODE_TO_PTR(u) ((void *) ((uintptr_t) (u)+1))
|
||||
static inline mode_t PTR_TO_MODE(void *p) {
|
||||
return p ? (mode_t) ((uintptr_t) p - 1) : MODE_INVALID;
|
||||
}
|
||||
static inline void* MODE_TO_PTR(mode_t m) {
|
||||
return m == MODE_INVALID ? NULL : (void *) ((uintptr_t) m + 1);
|
||||
}
|
||||
|
||||
int rmdir_parents(const char *path, const char *stop);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user